Pagini recente » Autentificare | Cod sursa (job #2012657) | Monitorul de evaluare | Cod sursa (job #2008366) | Cod sursa (job #2013760)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100002
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,q,v[Nmax],sparse[Nmax][20];
int preprocess(){
for(int i=1;i<=n;i++)sparse[i][0]=v[i];
for(int j=1;(1<<j)<=n;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
sparse[i][j]=min(sparse[i][j-1],sparse[i+(1<<(j-1))][j-1]);
}
}
}
int main()
{
f>>n>>q;
for(int i=1;i<=n;i++)f>>v[i];
preprocess();
for(int i=1;i<=q;i++){
int a,b,l,k;
f>>a>>b;
l=b-a+1;
k=log(l);
g<<min(sparse[a][k],sparse[b+1-(1<<k)][k])<<"\n";
}
return 0;
}