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