Pagini recente » Cod sursa (job #1071054) | Cod sursa (job #1887394) | Cod sursa (job #1781123) | Cod sursa (job #1857108) | Cod sursa (job #1897649)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int r[100020][20],n,nr,i1,o1;
int min1(int a,int b)
{
if(a<b)
return a;
else
return b;
}
void proces()
{
int l=ceil(log2(n));
for(int j=1;j<l;j++)
{
for(int i=0;i<n;i++)
{
if(i+(1<<(j-1))<n)
r[i][j]=min1(r[i][j-1],r[i+(1<<(j-1))][j-1]);
else
r[i][j]=r[i][j-1];
}
}
}
void afisare()
{
int l1=ceil(log2(o1-i1));
if(o1-(1<<l1)+1>=0)
printf("%d\n",min1(r[i1][l1],r[o1-(1<<l1)+1][l1]));
else
printf("%d\n",r[i1][l1]);
}
void citire()
{
scanf("%d %d",&n,&nr);
for(int i=0;i<n;i++)
{
scanf("%d",&r[i][0]);
}
proces();
for(int i=0;i<nr;i++)
{
scanf("%d %d",&i1,&o1);
i1--;
o1--;
afisare();
}
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
citire();
//cout << "Hello world!" << endl;
return 0;
}