Pagini recente » Cod sursa (job #422047) | Cod sursa (job #1375558) | Cod sursa (job #1882695) | Cod sursa (job #560331) | Cod sursa (job #2430920)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int NMAX = 1e5 + 5;
int mat[NMAX][20];
int main(){
int n,m,x,y,k,dif,p,i,j;
f >> n >> m;
for(i = 0 ; i < n ; i++)
f >> mat[i][0];
for(j = 1 ; (1 << j) <= n ; j++)
for(i = 0 ; i + (1 << j) <= n ; i++)
mat[i][j] = min(mat[i][j-1], mat[i + (1 << (j - 1))][j - 1] );
for(i = 1 ; i <= m ; i++){
f >> x >> y;
dif = y - x + 1;
k = log2(dif);
p = dif - (1 << k);
x--;
g << min(mat[x][k], mat[x+p][k]) << "\n";
}
return 0;
}