Pagini recente » Cod sursa (job #1454910) | Cod sursa (job #1439859) | Cod sursa (job #2505378) | Cod sursa (job #2389517) | Cod sursa (job #2506562)
#include <iostream>
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int v[NMAX][17]={0},a[NMAX],n;
int log2(int x)
{
if(x==1)
return 0;
return log2(x/2)+1;
}
void rmq()
{
for(int i=0;i<n;++i)
v[i][0]=a[i];
for(int j=1;(1<<j)<=n;++j)
for(int i=0;i+(1<<j)-1<=n;++i)
v[i][j]=min(v[i][j-1],v[i+(1<<(j-1))][j-1]);
}
int main()
{
int m;
f>>n>>m;
for(int i=0;i<n;++i)
f>>a[i];
rmq();
while(m--)
{
int x,y;
f>>x>>y;
--x,--y;
int r=log2(y-x+1);
g<<min(v[x][r],v[y-(1<<r)+1][r])<<'\n';
}
return 0;
}