Pagini recente » Cod sursa (job #2579461) | Cod sursa (job #467858) | Cod sursa (job #172888) | Cod sursa (job #1461230) | Cod sursa (job #3296600)
/*
5 4
1
5
6
4
3
2 4
1 2
3 5
1 4
*/
#include <bits/stdc++.h>
using namespace std;
const int NMAX=100000;
int v[NMAX], rmq[NMAX][15];
ifstream f("rmq.in");
ofstream g("rmq.out");
void build_rmq(int n){
for (int i=0;i<n;i++)
rmq[i][0]=v[i];
for (int j=1;(1<<j)<=n;j++){
for (int i=0;i<=n-(1<<j);i++){
rmq[i][j]=min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
}
}
}
int min_rmq(int i, int j){
int k=log2(j-i+1);
return min(rmq[i][k], rmq[j-(1<<k)+1][k]);
}
int main()
{
ios_base :: sync_with_stdio(false);
f.tie(NULL);
int n,q;
f>>n>>q;
for (int i=0;i<n;i++){
f>>v[i];
}
build_rmq(n);
for (int i=0;i<q;i++){
int x,y;
f>>x>>y;
x--;
y--;
g<<min_rmq(x,y)<<'\n';
}
return 0;
}