Pagini recente » Cod sursa (job #1208786) | Cod sursa (job #1375432) | Cod sursa (job #368846) | Cod sursa (job #1606204) | Cod sursa (job #2785335)
#include <bits/stdc++.h>
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define ll long long
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int a[100001],b[100001][18],i,j,n,m,k=INT_MAX,l,t;
int main()
{
in>>n>>m;
for(i=1;i<=n;i++)
in>>a[i];
for(i=n;i;i--)
{
k=bmin(k,a[i]),b[i][0]=a[i],j=0;
while(j<t)b[i][j+1]=bmin(b[i][j],b[i+(1<<j)][j]),j++;
while(++j<18)b[i][j]=k;
if((l&(l+1))==0)++t;
//for(j=0;j<5;j++)cout<<b[i][j]<<' ';cout<<t<<'\n';
++l;
}
while(m--)
{
in>>i>>j,k=INT_MAX,l=++j-i;
for(t=0;l;t++)
if(l&(1<<t))
j-=1<<t,k=bmin(k,b[j][t]),l^=1<<t;
out<<k<<'\n';
}
}