Pagini recente » Cod sursa (job #2472690) | Cod sursa (job #2282802) | Solutii preONI 2006, Runda a 4-a | Cod sursa (job #2533112) | Cod sursa (job #151641)
Cod sursa(job #151641)
#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;
}