Pagini recente » Cod sursa (job #1067206) | Cod sursa (job #1757494) | Cod sursa (job #774229) | Cod sursa (job #1265018) | Cod sursa (job #3263369)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int p2[100010];
int rmq[10020][20];
int v[100020];
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 + (1 << (j - 1))<= 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;
}