Pagini recente » Cod sursa (job #810247) | Cod sursa (job #972099) | Cod sursa (job #147142) | Cod sursa (job #2261313) | Cod sursa (job #2450240)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("rmq.in");
ofstream out ("rmq.out");
int n,i,j,m[30][100010],a[100010],c,x,y,k,log2[10000],l,r;
int main() {
in>>n;
in>>c;
log2[1]=0;
for(int i=2; i<=n; i++) {
log2[i]=1+log2[i/2];
}
for(i=1; i<=n; i++) {
in>>a[i];
}
for(i=1; i<=n; i++)
m[0][i]=a[i];
for (j = 1; (1 << j) <= n; j++)
for (i = 1; i + (1 << j) - 1 <= n; i++)
m[j][i] = min(m[j - 1][i], m[j - 1][i + (1 << (j - 1))]);
for(i=1; i<=c; i++) {
in>>l>>r;
k=r-l+1;
k=log2[k];
out<<min(m[k][l],m[k][r-(1<<k)+1])<<"\n";;
}
return 0;
}