Pagini recente » Cod sursa (job #1968746) | Cod sursa (job #724591) | Cod sursa (job #142175) | Cod sursa (job #683675) | Cod sursa (job #2904517)
#include <iostream>
#include <fstream>
using namespace std;
int n, m, i, j, a, b, c, d, rmq[200002][30], v[200002];
ifstream f("rmq.in");
ofstream o("rmq.out");
int main()
{
f>>n>>m;
f>>rmq[1][0];
for(i=2; i<=n; ++i) {
f>>rmq[i][0];
v[i] = v[i/2]+1;
}
for(i=1; i<=v[n]; i++)
for(j=1; j<=n; j++)
rmq[j][i]=min(rmq[j][i-1], rmq[j+(1<<(i-1))][i-1]);
for(i=1; i<=m; i++) {
f>>c>>d;
a = rmq[c][v[d-c]];
b = rmq[d-(1<<v[d-c])+1][v[d-c]];
if (a < b) o<<a<<'\n';
else o<<b<<'\n';
}
return 0;
}