Pagini recente » Cod sursa (job #1686290) | Cod sursa (job #66605) | Cod sursa (job #2706455) | Cod sursa (job #2204978) | Cod sursa (job #379209)
Cod sursa(job #379209)
#include<fstream.h>
#include<iostream.h>
int n,m,i,lo,lg[100009],x,y,j,a[20][1000009],l;
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[0][i];
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
for(j=1;j<=lg[n];j++)
for(i=1;j<=lg[n-i+1];i++)
if(a[j-1][i]<a[j-1][i+(1<<(j-1))])
a[j][i]=a[j-1][i];
else
a[j][i]=a[j-1][i+(1<<(j-1))];
for(i=1;i<=m;i++)
{
f>>x>>y;
l=y-x+1;
lo=lg[l];
if(a[lo][x]<a[lo][y-(1<<lo)+1])
g<<a[lo][x]<<'\n';
else
g<<a[lo][y-(1<<lo)+1]<<'\n';
}
return 0;
}