Pagini recente » Cod sursa (job #99124) | Cod sursa (job #1589246) | Cod sursa (job #2701736) | Cod sursa (job #598941) | Cod sursa (job #3263325)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int p2[100000010];
int rmq[1000010][10000010];
int v[10000010];
int main()
{
int n, m, x, y;
fin >> n >> m;
for(int i = 1; i <= n; i++){
fin >> v[i];
rmq[i][0] = v[i];
}
int doi = 0;
for(int i = 1; i <= n; i++){
if((1 << doi + 1) <= i)
doi++;
p2[i] = doi;
}
for(int j = 1; j <= p2[n]; j++){
for(int i = 1; i <= n; i++)
rmq[i][j] = min(rmq[i][j - 1],rmq[i+(1<<(j - 1))][j-1]);
}
for(int j = 1; j <= m; j++){
fin >> x >> y;
int l = y - x + 1;
l = p2[l];
fout << min(rmq[x][l],rmq[y-(1<<l)+1][l]) << endl;
}
return 0;
}