Pagini recente » Cod sursa (job #1143809) | Cod sursa (job #1002366) | Cod sursa (job #1314600) | Cod sursa (job #746649) | Cod sursa (job #2901747)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int maxN = 1e5 + 5;
int suma[maxN], lg[32];
int rmq[32][maxN];
signed main() {
int n; fin >> n;
for(int i = 1; i <= n; ++i) {
// int l, h; cin >> l >> h;
//
// suma[i] = suma[i-1] + l;
// rmq[0][i] = h;
fin >> rmq[0][i];
}
lg[0] = lg[1] = 0;
for(int i = 2; i <= n; ++i)
lg[i] = lg[i/2] + 1;
for(int step = 1; step <= lg[n]; ++step)
for(int i = 1; i <= n - (1 << step) + 1; ++i)
rmq[step][i] = min(rmq[step-1][i],
rmq[step-1][i+(1<<(step-1))]);
int q; fin >> q;
for(int i = 1; i <= q; ++i) {
int x, y; fin >> x >> y;
int l = lg[y-x+1];
fout << min(rmq[l][x],
rmq[l][y - (1 << l) + 1]) /* (suma[y] - suma[x-1])*/ << '\n';
}
return 0;
}