Pagini recente » Cod sursa (job #2116208) | Cod sursa (job #651919) | Cod sursa (job #126101) | Cod sursa (job #838304) | Cod sursa (job #774657)
Cod sursa(job #774657)
#include<fstream>
#include<algorithm>
using namespace std;
const int NM=100005;
int a[NM],lg[NM],rmq[20][NM],N,M;
int main(void){
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int i,j,l,x,aux;
fin>>N>>M;
for(i=1;i<=N;++i)fin>>a[i];
for(i=1;i<=N;++i)rmq[0][i]=a[i];
for(i=2;i<=N;++i)lg[i]=lg[i>>1]+1;
for(i=1;(1<<i)<=N;++i)
for(j=1;j+(1<<i)-1<=N;++j)
{
x=1<<(i-1);
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+x]);
}
while(M--)
{
fin>>i>>j;
x=j-i+1;
l=lg[x];
aux=x-(1<<l);
fout<<min(rmq[l][i],rmq[l][i+aux])<<'\n';
}
return 0;
}