Pagini recente » Cod sursa (job #371986) | Statisticile problemei Role | Cod sursa (job #2072743) | Cod sursa (job #178698) | Cod sursa (job #2013766)
#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=0;i<n;i++)sparse[i][0]=v[i];
for(int j=1;j<=log2(n);j++){
for(int i=0;i+(1<<(j-1))<n;i++){
sparse[i][j]=min(sparse[i][j-1],sparse[i+(1<<(j-1))][j-1]);
}
}
}
/*void afisare(){
for(int i=0;i<n;i++){
for(int j=0;(1<<j)<=n;j++)g<<sparse[i][j]<<" ";
g<<"\n";
}
}*/
int main()
{
f>>n>>q;
for(int i=0;i<n;i++)f>>v[i];
preprocess();
//afisare();
for(int i=1;i<=q;i++){
int a,b,l,k;
f>>a>>b;
a--;b--;
l=b-a+1;
k=log2(l);
g<<min(sparse[a][k],sparse[b+1-(1<<k)][k])<<"\n";
}
return 0;
}