Pagini recente » Cod sursa (job #2933592) | Cod sursa (job #2757105) | Cod sursa (job #2691533) | Cod sursa (job #2305168) | Cod sursa (job #2764281)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int d[1001][100001];
int main()
{
int n, m, p = 0, nr = 0, maxi = 0;
f >> n >> m;
for(int i = 1; i <= n; i++){
f >> d[0][i];
}
nr = n;
for(int i = 1; nr > 1; i++){
maxi++;
int nr2 = 0;
for(int j = 1; (j + pow(2, (i-1)) <= nr); j++){
d[i][j] = min(d[i-1][j], d[i-1][j + int(pow(2, i-1))]);
nr2++;
}
nr = nr2;
}
for(int k = 1; k <= m; k++){
int a,b, x, pow2;
f >> a >> b;
x = b - a;
pow2 = int(log2(x));
//pow2 = pow(2, 0);
//while(pow(2, pow2) <= x){
//pow2++;
//}
//pow2--;
g << min(d[pow2][a], d[pow2][b - int(pow(2, pow2)) + 1]) << "\n";
}
return 0;
}