Pagini recente » Cod sursa (job #213088) | Cod sursa (job #283431) | Cod sursa (job #33969) | Cod sursa (job #635735) | Cod sursa (job #1747148)
#include <bits/stdc++.h>
#define NMax 100005
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,x,y,diff;
int a[NMax],LG[NMax];
int rmq[20][NMax];
int main()
{
f >> n >> m;
memset(rmq,INF,sizeof(rmq));
for(int i = 1; i <= n; ++i){
f >> a[i];
rmq[0][i] = a[i];
}
LG[1] = 0;
for(int i = 2; i <= n; ++i){
LG[i] = LG[i / 2] + 1;
}
for(int i = 1; (1<<i) <= n; ++i){
for(int j = 1; j <= n; ++j){
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j - (1 << (i - 1))]);
}
}
for(int i = 1; i <= m; ++i){
f >> x >> y;
diff = LG[y - x + 1];
g << min(rmq[diff][y], rmq[diff][y - (1 << diff) + 1]) << '\n';
}
return 0;
}