Pagini recente » Cod sursa (job #2286383) | Cod sursa (job #3278554) | Cod sursa (job #1106924) | Cod sursa (job #669169) | Cod sursa (job #2127935)
#include<stdio.h>
#include<iostream>
#include<vector>
#define N 100002
#define Dim 0x3f3f3f3f
using namespace std;
long int a[N],v[N],t,n,m;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
long int i,j,x,y,s,d;
scanf("%ld\n%ld",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(t=0;t*t<n;t++);
for(i=1;t*i<=n;i++)
{
v[i]=Dim;
for(j=t*(i-1)+1;j<=t*i;j++)
v[i]=min(v[i],a[j]);
}
for(i=1;i<=m;i++)
{
long int ans;
ans=Dim;
scanf("%d %d",&x,&y);
for(j=1;j*t<x;j++);
s=min(t*j,y);
j++;
for(;j*t<=y;j++)
ans=min(ans,v[j]);
d=max((j-1)*t,x);
for(j=x;j<=s;j++)
ans=min(ans,a[j]);
for(j=d;j<=y;j++)
ans=min(ans,a[j]);
printf("%d\n",ans);
}
}