Pagini recente » Cod sursa (job #404126) | Cod sursa (job #149274) | Cod sursa (job #3287759) | Cod sursa (job #1821477) | Cod sursa (job #1956897)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int log[100010], d[17][100010], n, m, x, y;
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; ++i)
fin >> d[0][i];
for(int i = 2; i <= n; ++i)
log[i] = log[i / 2] + 1;
for(int i = 1; i <= log[n]; ++i)
for(int j = 1; j <= n; ++j)
d[i][j] = 999999;
for(int i = 1; i <= log[n]; ++i){
for(int j = 1; j + (1 << (i)) - 1 <= n; ++j){
d[i][j] = min(d[i - 1][j], d[i - 1][j + (1 << ( i - 1 ))]);
//cout << d[i][j] << ' ';
}
//cout << '\n';
}
for(int q = 1; q <= m; ++q){
fin >> x >> y;
int k = log[y - x + 1];
fout << min(d[k][x], d[k][y - (1 << k) + 1]) << '\n';
}
return 0;
}