Pagini recente » Cod sursa (job #523271) | Cod sursa (job #336459) | Cod sursa (job #2422307) | Cod sursa (job #2833388) | Cod sursa (job #1807625)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
unsigned n, m, i, j;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
fin >> n >> m;
vector<int> v(n);
vector<int[18]> M(n);
for(i = 1; i <= n; ++i)
fin >> v[i];
for(i = 1; i <= n; ++i)
M[i][0] = v[i];
for(j = 1; (1u<<j) <= n; ++j)
for(i = 1; i <= n; ++i)
M[i][j] = min(M[i][j-1], M[i+(1<<j)-1][j-1]);
for(i = 1; i <= m; ++i)
{
int a, b;
fin >> a >> b;
const unsigned L = log2(b-a+1);
fout << min(M[a][L], M[b-(1<<L)+1][L]) << '\n';
}
return 0;
}