Pagini recente » Cod sursa (job #1397332) | Cod sursa (job #1880877) | Cod sursa (job #726452) | Cod sursa (job #2787537) | Cod sursa (job #387200)
Cod sursa(job #387200)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
#define max(x,y) ((x)>(y)?(x):(y))
ofstream fout("rmq.out");
long lg[100005],RMQ[100005][20],m,n,i,j,v[100005];
int main()
{
ifstream fin("rmq.in");
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>v[i];
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(i=1;i<=n;i++)
for(j=1;j<=lg[n];j++)
RMQ[i][j]=max(RMQ[i][j-1],RMQ[i+(1<<(j-1))+1][j-1]);
for(i=1;i<=m;i++)
{fin>>i>>j;
fout<<max(RMQ[i][lg[j-i+1]],RMQ[j-1<<lg[j-i+1]+1][lg[j-i+1]]);
}
fin.close();
fout.close();
return 0;
}