Pagini recente » Cod sursa (job #1095384) | Cod sursa (job #164877) | Cod sursa (job #973319) | Cod sursa (job #2470359) | Cod sursa (job #1519174)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define MAX 100010
int n, m, i, j, log[MAX], x, y, dist;
int a[MAX][17];
int main()
{
fin >> n >> m;
for(i = 1 ; i <= n ; i++)
{
fin >> a[i][0];
}
for(j = 1 ; (1<<j) <= n ; j++)
{
for(i = 1 ; i + (1<<j) - 1 <= n ; i++)
{
a[i][j] = min(a[i][j - 1], a[i + (1 << (j - 1))][j - 1]);
}
}
log[1] = 0;
for(i = 2 ; i <= n ; i++)
log[i] = log[i / 2] + 1;
while(m--)
{
fin >> x >> y;
if(x >= y)
{
swap(x, y);
}
dist = y - x + 1;
fout << min(a[x][log[dist]], a[y - (1<<log[dist]) + 1][log[dist]]) << "\n";
}
}