Pagini recente » Cod sursa (job #2103070) | Cod sursa (job #2370899) | Cod sursa (job #985798) | Cod sursa (job #302151) | Cod sursa (job #387488)
Cod sursa(job #387488)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
#define min(x,y) ((x)<(y)?(x):(y))
ofstream fout("rmq.out");
long lg[100005],(*RMQ)[20]=new long[100005][20],m,n,i,j,v[100005],k;
int main()
{
ifstream fin("rmq.in");
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>RMQ[i][0];
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(j=1;j<=lg[n];j++)
for(i=1;i<=n-(1<<j)+1;i++)
RMQ[i][j]=min(RMQ[i][j-1],RMQ[i+(1<<(j-1))][j-1]);
for(k=1;k<=m;k++)
{fin>>i>>j;
fout<<min(RMQ[i][lg[j-i+1]],RMQ[j-(1<<lg[j-i+1])+1][lg[j-i+1]])<<'\n';
}
fin.close();
fout.close();
return 0;
}