Pagini recente » Cod sursa (job #2255910) | Cod sursa (job #2373562) | Cod sursa (job #2381110) | Cod sursa (job #2233180) | Cod sursa (job #2507042)
#include <bits/stdc++.h>
using namespace std;
int rmq[18][200005], lg2[200005];
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int i,n,m;
cin >> n >> m;
for (i=1; i<=n; i++)
cin >> rmq[0][i];
lg2[1]=0;
for(i=2; i<=n; i++)
lg2[i]=lg2[i>>1]+1;
int j,q,p,k;
for (i=1; i<=17; i++)
for (j=1; j<=n; j++)
rmq[i][j]=min(rmq[i-1][j+(1<<(i-1))],rmq[i-1][j]);
for (i=1; i<=m; i++)
{
cin >> p >> q;
k=lg2[q-p];
cout << min(rmq[k][q-(1<<k)+1],rmq[k][p]) << '\n';
}
return 0;
}