Pagini recente » Cod sursa (job #1385106) | Cod sursa (job #233144) | Cod sursa (job #2362294) | Cod sursa (job #2535064) | Cod sursa (job #2785334)
#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 min(a,b)((a<b)?(a):(b))
#define max(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=min(k,a[i]),b[i][0]=a[i],j=0;
while(j<t)b[i][j+1]=min(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;t<18;t++)
if(l&(1<<t))
j-=1<<t,k=min(k,b[j][t]);
out<<k<<'\n';
}
}