Pagini recente » Cod sursa (job #684793) | Cod sursa (job #995373) | Cod sursa (job #1825812) | Cod sursa (job #654917) | Cod sursa (job #957737)
Cod sursa(job #957737)
#include<fstream>
#include<vector>
using namespace std;
int main(){
int i, p, x, y, n, m, log, min;
freopen("rmq.in", "rt", stdin);
freopen("rmq.out", "wt", stdout);
scanf("%d %d", &n, &m);
for(log=1; (1<<log)<=n; log++);
int a[log+1][n+1];
for(i=1; i<=n; i++)
scanf("%d", &a[0][i]);
for(p=1; p<=log; p++){
for(i=1; i<=n; i++){
a[p][i] = a[p-1][i];
if(i+(1<<(p-1))<=n && a[p][i]>a[p-1][i+(1<<(p-1))])
a[p][i]=a[p-1][i+(1<<(p-1))];
}
}
for(i=1; i<=m; i++){
scanf("%d %d", &x, &y);
for(p=0; x-1+(1<<(p+1)) <=y; p++);
min = a[p][x];
if(min>a[p][y-(1<<p)+1])
min = a[p][y-(1<<p)+1];
printf("%d\n", min);
}
fclose(stdin);
fclose(stdout);
return 0;
}