Pagini recente » Cod sursa (job #2887923) | Cod sursa (job #2493479) | Cod sursa (job #1307050) | Cod sursa (job #3130053) | Cod sursa (job #1977868)
#include <fstream>
#include <algorithm>
using namespace std;
int v[100001],log[100001];
int r[100001][30];
int query(int a, int b){
int l = log[b - a + 1];
return min(r[a + (1 << l) - 1][l], r[b][l]);
}
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
int i,n,m,a,b,j;
f>>n>>m;
for(i = 1; i <= n; i++){
f>>v[i];
r[i][0] = v[i];
j = 1;
while(i - (1<<j) >= 0){
r[i][j] = min(r[i - (1 << (j - 1))][j - 1], r[i][j - 1]);
j++;
}
}
log[1] = 0;
for(i = 2; i <= n; i++){
log[i] = log[i / 2] + 1;
}
for(i = 1; i <= m; i++){
f>>a>>b;
g<<query(a,b)<<"\n";
}
return 0;
}