Pagini recente » Cod sursa (job #581831) | Cod sursa (job #431593) | Cod sursa (job #2702358) | Cod sursa (job #672883) | Cod sursa (job #1915004)
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#define INF 0x3f3f3f3f
#define NMAX 100005
using namespace std;
int n, q, a[NMAX], smen[NMAX], sqr;
void citire()
{
scanf("%d %d ",&n,&q);
sqr = (int) sqrt(n);
for(int i=0;i<n;i++)
{
scanf("%d ",&a[i]);
if(i%sqr==0)
{
smen[i/sqr]=a[i];
}
else
{
smen[i/sqr] = min(smen[i/sqr],a[i]);
}
}
}
int query(int i,int j)
{
int minim = a[i];
for(int t=i+1; t< (i/sqr+1) * sqr;t++)
minim = min(a[t],minim);
for(int bucata=(i/sqr)+1; (bucata+1)*sqr -1 <= j; bucata++)
minim = min(smen[bucata],minim);
for(int t=j/sqr * sqr; t<=j;t++)
minim = min(a[t],minim);
return minim;
}
void solve()
{
for(int qq=1;qq<=q;qq++)
{
int i, j;
scanf("%d %d ",&i,&j);
printf("%d\n",query(i-1,j-1));
}
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
citire();
solve();
return 0;
}