Pagini recente » Cod sursa (job #1329074) | Cod sursa (job #1145937) | Cod sursa (job #96804) | Cod sursa (job #2762192) | Cod sursa (job #1914842)
#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;
fout << min(d[log[y - x + 1]][x], d[log[y - x + 1]][y - log[y - x + 1]]) << '\n';
}
return 0;
}