Pagini recente » Monitorul de evaluare | Cod sursa (job #3294665) | Rating Robert Vadastreanu (Robert_VRV) | Rating Chiriac Catalin (kiriaccatalin) | Cod sursa (job #3294924)
#include<bits/stdc++.h>
using namespace std;
int main(){
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long n, m, i, j, x, y, nr, k, minrmq;
fin >> n >> m;
int rmq[100000][20];
for(i = 0; i < n; i++){
fin >> rmq[i][0];
}
for(j = 1; j <= log2(n); j++){
for(i = 0; i <= n - (1<<j); i++){
rmq[i][j] = min(rmq[i][j-1], rmq[i + (1<<(j-1))][j-1]);
}
}
for(int nr = 1; nr <= m; nr++){
fin >> x >> y;
x--;
y--;
int k = int(log2(y-x+1));
long minrmq = min(rmq[x][k], rmq[y-(1<<k) + 1][k]);
fout << minrmq << endl;
}
}