Pagini recente » Cod sursa (job #2231017) | Cod sursa (job #695125) | Rezultatele filtrării | Cod sursa (job #3215676) | Cod sursa (job #1242522)
#include <iostream>
#include <fstream>
#define DN 100005
using namespace std;
ifstream si("rmq.in");
ofstream so("rmq.out");
int rmq[DN][25];
int find(int a,int b)
{
int p=0;
for(;a+(1<<p)<=b;++p);
--p;
p=max(p,0);
return min(rmq[a][p],rmq[b-(1<<p)+1][p]);
}
int main()
{
int n,m;
si>>n>>m;
int i;
for(i=1;i<=n;++i)
si>>rmq[i][0];
int p;
for(p=1;p<=18;++p)
for(i=1;i+(1<<(p-1))<=n;++i)
rmq[i][p]=min(rmq[i][p-1],rmq[i+(1<<(p-1))][p-1]);
int a,b;
for(i=0;i<m;++i)
{
si>>a>>b;
so<<find(a,b)<<endl;
}
}