Pagini recente » Cod sursa (job #1560256) | Cod sursa (job #1480061) | Cod sursa (job #2723461) | Cod sursa (job #2719046) | Cod sursa (job #3250383)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int dim=100001;
int rmq[dim][21], lg[dim];
int query(int st, int dr){
int len=lg[dr-st+1];
return min(rmq[dr][len], rmq[st+(1<<len)-1][len]);
}
int main()
{
int n, x, i, j, k, v[dim];
f>> n >> x;
for(i=1; i<=n; i++){
f>> v[i]; rmq[i][0]=v[i];
}
for(i=2; i<=n; i++){
lg[i]=1+lg[i/2];
}
for(k=1; k<=17; k++){
for(i=1; i<=n; i++){
rmq[i][k]=min(rmq[i][k-1], rmq[max(1, i-(1<<(k-1)))][k-1]);
}
}
for(k=1; k<=x; k++){
f>> i >> j;
g<< query(i, j) << endl;
}
return 0;
}