Pagini recente » Cod sursa (job #1851488) | Cod sursa (job #2500752) | Cod sursa (job #1513738) | Cod sursa (job #2493336) | Cod sursa (job #1753242)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cmath>
#define N 100005
using namespace std;
int rmq[20][N],lg[N];
ifstream si("rmq.in");
ofstream so("rmq.out");
int minn(int a,int b)
{
int put=lg[b-a+1];
return min(rmq[put][a],rmq[put][b-(1<<put)+1]);
}
int main()
{
int n,m;
si>>n>>m;
int i,j;
for(i=1;i<=n;++i)
{
si>>rmq[0][i];
}
for(i=2;i<=n;++i)
lg[i]=lg[i/2]+1;
for(i=1;i<20;++i)
{
for(j=1;j+(1<<i-1)-1<=n;++j)
{
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<i-1)]);
}
}
int a,b;
for(i=0;i<m;++i)
{
si>>a>>b;
so<<minn(a,b)<<'\n';
}
return 0;
}