Pagini recente » Cod sursa (job #2621389) | Cod sursa (job #2958736) | Cod sursa (job #2621549) | Cod sursa (job #2621146) | Cod sursa (job #3132746)
#include <iostream>
#include <fstream>
#include <cmath>
ifstream f("rmq.in");
ofstream g("rmq.out");
int r[100005][18],i,j,n,m,p,st,dr,lung,pt=1, l = 17;
int main()
{
f >> n >> m;
for(i = 1; i <= n; i++){
f>>r[i][0];
}
for(p = 1; p <= l; p++){
for(i = 1; i <= n; i++){
if(i+put <= n) r[i][p] = min(r[i][p-1],r[i+put][p-1]);
}
put <<= 1;
}
i = 1;
while(i <= m){
f>>left>>right;
pt = 1, p = 0;
lung = right - left + 1;
while(pt <= lung){
p++;
pt <<= 1;
}
p--;
pt >>= 1;
g << min(r[left][p],r[right-pt+1][p]) << endl;
i++;
}
return 0;
}