Pagini recente » Cod sursa (job #212679) | Cod sursa (job #1376256) | Cod sursa (job #1829717) | Cod sursa (job #3151850) | Cod sursa (job #154107)
Cod sursa(job #154107)
#include <stdio.h>
#include <vector>
using namespace std;
#define NMAX 100002
#define INF 0x3f3f3f3f
long int a[NMAX],sq[NMAX];
long int rt;
long int n,m;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
long int i,j,x,y,ls,ld;
scanf("%ld %ld",&n,&m);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
for (rt=0;rt*rt<=n;rt++);
rt--;
for (i=1;rt*i<=n;i++)
{
sq[i]=INF;
for (j=rt*(i-1)+1;j<=rt*i;j++)
sq[i]=min(sq[i],a[j]);
}
for (i=1;i<=m;i++)
{
long int mn;
mn=INF;
scanf("%ld %ld",&x,&y);
for (j=1;rt*j<x;j++);
j++;
ls=min(rt*(j-1),y);
for (;rt*j<=y;j++)
mn=min(mn,sq[j]);
ld=max(rt*(j-1),x);
for (j=x;j<=ls;j++)
mn=min(mn,a[j]);
for (j=ld;j<=y;j++)
mn=min(mn,a[j]);
printf("%ld\n",mn);
}
return 0;
}