Pagini recente » Cod sursa (job #3201627) | Cod sursa (job #2759545) | Clasament jc2020-runda1 | Cod sursa (job #2190232) | Cod sursa (job #1234433)
#include <cstdio>
#define n_max 1000010
#include <algorithm>
#include <cmath>
#define sqmx 318
#define emv 1000000
using namespace std;
int n,m,sqr;
int a[n_max],minsq[sqmx];
void read(){
int i;
scanf("%d %d",&n, &m);
sqr=(int)sqrt(n)-1;
for(i=1;i<=n;i++)scanf("%d" ,&a[i]);
for(i=1;i*sqr<=n;i++)
for(int j=sqr*(i-1)+1;j<=sqr*i;j++)
if(!minsq[i] || minsq[i] > a[j])
minsq[i] =a[j];
}
int main(void){
freopen("rmq.in","r" ,stdin);
freopen("rmq.out", "w" ,stdout );
read();
int tg,x,y;
while(m--){
tg=emv;
scanf("%d %d",&x,&y);
int j;
for(j=1;j*sqr<x;j++);
j++;
int ls=min(y,sqr*(j-1));
while(j*sqr<=y){
if(minsq[j]<tg)tg=minsq[j];
j++;
}
int ld=max(sqr*(j-1),x);
for(j=x; j<=ls;j++)
if(a[j]<tg)tg=a[j];
for(j=ld;j<=y;j++)
if(a[j]<tg)tg=a[j];
printf("%d\n",tg);
}
}