Pagini recente » Cod sursa (job #2248720) | Cod sursa (job #1627588) | Cod sursa (job #2588854) | Cod sursa (job #1691565) | Cod sursa (job #1714722)
///Nrx imi va datora un suc
#include <bits/stdc++.h>
using namespace std;
int v[20][100005], p[100005];
int n;
void build(void) {
int t;
for(int i=2; i<=n; i<<=1)
++p[i];
for(int i=1; i<=n; ++i)
p[i]+=p[i-1];
for(int i=1; (1<<i)<=n; ++i)
for(int j=1; j+(1<<i)-1<=n; ++j)
v[i][j]=min(v[i-1][j], v[i-1][j+(1<<i-1)]);
}
inline int query(int x, int y) {
int step = p[y-x+1];
return min(v[step][x], v[step][y-(1<<step)+1]);
}
int main(void) {
FILE *fi = fopen("rmq.in", "r");
FILE *fo = fopen("rmq.out", "w");
int m, x, y;
fscanf(fi,"%d %d",&n,&m);
for(int i=1; i<=n; ++i) {
fscanf(fi,"%d",&v[0][i]);
}
build();
for(int i=1; i<=m; ++i) {
fscanf(fi,"%d%d",&x,&y);
fprintf(fo,"%d\n",query(x, y));
}
fclose(fi);
fclose(fo);
return 0;
}