Pagini recente » Cod sursa (job #71613) | Cod sursa (job #907399) | Cod sursa (job #2873963) | Cod sursa (job #3126967) | Cod sursa (job #2790668)
#include <bits/stdc++.h>
#include<fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long int N,M,Arr[100000],i,j,nrel, high, low, log1,lg[100000];
int main()
{
fin>>N>>M;
for(i=0; i<N; i++)
fin>>Arr[i];
lg[1]=0;
for (i=2;i<=N;i++)
lg[i]=lg[i/2]+1;
int rmin[N][lg[N]];
for(i=0; i<N; i++)
rmin[i][0]=Arr[i];
for(j=1; (1<<j)<=N; j++)
for(i=0; i+(1<<j)-1<N;i++)
rmin[i][j]=min(rmin[i][j-1], rmin[i+(1<<(j-1))][j-1]);
for(i=0; i<M; i++)
{
fin>>low>>high;
nrel=high-low+1;
log1=lg[nrel];
fout<<min(rmin[low][log1], rmin[low+nrel-(1<<log1)][log1]);
}
return 0;
}