Pagini recente » Cod sursa (job #1348933) | Cod sursa (job #2690032)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m;
int x[17][100001];
int query(int a,int b)
{
int p = 31 - __builtin_clz(b-a+1);
return min(x[p][a],x[p][b-(1<<p)+1]);
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
f>>x[0][i];
for(int j=1;j<=16;j++)
for(int i=1;i<=n-(1<<j)+1;i++)
x[j][i]=min(x[j-1][i],x[j-1][i+(1<<(j-1))]);
int a,b;
for(int k=1;k<=m;k++)
{
f>>a>>b;
g<<query(a,b)<<'\n';
}
f.close();
g.close();
return 0;
}