Pagini recente » Cod sursa (job #2377785) | Cod sursa (job #2220938) | Cod sursa (job #1045357) | Monitorul de evaluare | Cod sursa (job #1467506)
#include <cstdio>
#include <cmath>
int n,m;
int v[100005],a[100005];
bool x[100005];
int main()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
int s=sqrt(n),nract;
for(int i=1;i<=n;i++)
{
if(i%s==1)
{
nract=i;
x[i]=1;
v[i]=100000000;
}
scanf("%d",&a[i]);
if(a[i]<v[nract]) v[nract]=a[i];
}
int i1,i2;
for(int quer=1;quer<=m;quer++)
{
scanf("%d%d",&i1,&i2);
int rasp=10000000;
for(int i=i1;i<=i2;i++)
{
if(x[i]==1&&i+s<=i2)
{
if(rasp>v[i])
{
rasp=v[i];
i+=s;
i--;
}
}
else
{
if(rasp>a[i]) rasp=a[i];
}
}
printf("%d\n",rasp);
}
}