Pagini recente » Cod sursa (job #2310306) | Cod sursa (job #1013786) | Cod sursa (job #2458867) | Cod sursa (job #2319988) | Cod sursa (job #2904461)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[100001][20];
int main()
{
int n, m, i, j, k, x, y;
f>>n>>m;
for(i=1; i<=n; i++)
f>>a[i][0];
j = 1;
k = 1;
while(j<=n)
{
for(i=1; i+j-1<=n; i++)
a[i][k]=min(a[i][k-1],a[i+j][k-1]);
j=j<<1;
k++;
}
i = 1;
while(i<=m)
{
f>>x>>y;
if(x>y)
swap(x,y);
j = y - x + 1;
int p = 1;
k = 0;
while(p <= j)
{
p = p<<1;
k++;
}
p = p>>1;
k--;
g<<min(a[x][k],a[y-p+1][k])<<endl;
i++;
}
}