Pagini recente » Cod sursa (job #2623170) | Cod sursa (job #476232) | Cod sursa (job #524682) | Cod sursa (job #1689341) | Cod sursa (job #2368325)
#include <bits/stdc++.h>
#define NMAX 100000
using namespace std;
FILE*f=fopen("rmq.in","r");
FILE*g=fopen("rmq.out","w");
int a[NMAX][20],n,m;
int query(int x,int y) {
int k;
k=log2(y-x+1);
return min(a[x][k],a[y-(1<<k)+1][k]);
}
int main() {
int i,j,x,y;
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++) fscanf(f,"%d",&a[i][0]);
for (i=1;(1<<i)<=n;++i)
for (j=1;j+(1<<i)-1<=n;j++)
a[j][i]=min(a[j][i-1],a[j+(1<<(i-1))][i-1]);
for (i=1;i<=m;i++) {
fscanf(f,"%d%d",&x,&y);
fprintf(g,"%d\n",query(x,y));
}
return 0;
}