Pagini recente » Cod sursa (job #2912466) | Cod sursa (job #1652940) | Cod sursa (job #2704595) | Cod sursa (job #2393890) | Cod sursa (job #3212930)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int r[22][100010],p2[100010],x,y,l,q,n;
int main()
{
f>>n>>q;
for(int i=1; i<=n; i++)
f>>r[0][i];
for(int i=2; i<=n; i++)
p2[i]=1+p2[i/2];
for(int p=1; (1<<p)<=n; p++)
for(int i=1; i<=n; i++)
{
r[p][i]=r[p-1][i];
int j=i+(1<<(p-1));
if(j<=n && r[p][i]>r[p-1][j])
r[p][i]=r[p-1][j];
}
for(int i=1; i<=q; i++)
{
f>>x>>y;
int e=p2[y-x+1];
l=(1<<e);
g<<min(r[e][x],r[e][y-l+1])<<'\n';
}
return 0;
}