Pagini recente » Cod sursa (job #779332) | Cod sursa (job #2170086) | Cod sursa (job #1458902) | Cod sursa (job #414193) | Cod sursa (job #2871983)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int inf=1061109567,nmax=100002;
int a[nmax],sq[nmax],rt,n,m,i,j,x,y,ls,ld;
int main()
{
fin >>n>>m;
for (i=1;i<=n;i++)
fin >>a[i];
while (rt*rt<=n)
rt++;
rt--;
for (i=1;i*rt<=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++)
{int mn=inf;
fin >>x>>y;
j=1;
while (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;
}