Pagini recente » Cod sursa (job #212357) | Cod sursa (job #1088164) | Borderou de evaluare (job #565524) | Cod sursa (job #2891950) | Cod sursa (job #2232827)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100002
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long int a[NMAX],sq[NMAX];
long int rt;
long int n,m;
int main()
{
long int i,j,x,y,ls,ld;
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>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;
fin>>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]);
fout<<mn<<'\n';
}
return 0;
}