Pagini recente » Cod sursa (job #522592) | Istoria paginii runda/acsdfg/clasament | Cod sursa (job #1906857) | Istoria paginii runda/oni_11_12_3/clasament | Cod sursa (job #3041816)
#include <bits/stdc++.h>
#define L long long
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n,m,r[18][100001],p[100001],l,x,y;
int main()
{
in>>n>>m;
for(int i=1; i<=n; ++i)
{
in>>r[0][i];
if(i==1)
p[i]=0;
else p[i]=p[i/2]+1;
}
for(int i=1; (1<<i)<=n; ++i)
for(int j=1; j<=n-(1<<i)+1; ++j)
l=1<<(i-1),r[i][j]=min(r[i-1][j],r[i-1][j+l]);
for(int i=1; i<=m; ++i)
{
in>>x>>y;
int df=y-x+1;
int lg=p[df];
int sh=df-(1<<lg);
out<<min(r[lg][x],r[lg][x+sh])<<'\n';
}
}