Pagini recente » Cod sursa (job #1927468) | Cod sursa (job #2799331) | Cod sursa (job #2363818) | Cod sursa (job #2202392) | Cod sursa (job #2296958)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream si("rmq.in");
ofstream so("rmq.out");
int rmq[20][100005],lg[100005];
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;
for(int i=1;i<=n;++i)
{
si>>rmq[0][i];
}
for(int i=2;i<=n;++i)
lg[i]=lg[i/2]+1;
for(int i=1;i<20;++i)
{
for(int 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(int i=0;i<m;++i)
{
si>>a>>b;
so<<minn(a,b)<<'\n';
}
return 0;
}