Pagini recente » Cod sursa (job #2910311) | Cod sursa (job #127335) | Clasament m | Cod sursa (job #1213988) | Cod sursa (job #2485935)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
ll n, q;
ll pd[30][100010];
ll lg2[100010];
ll x,y, L, ans;
int main()
{
f >> n >> q;
for(int i = 1; i <= n; ++i)
f >> pd[0][i];
lg2[0] = lg2[1] = 0;
for(int i = 2; i <= n; ++i)
lg2[i] = lg2[i >> 2] + 1;
for(int i = 1; i <= lg2[n]; ++i)
for(int j = 1; j + (1 << (i-1))<= n; ++j)
pd[i][j] = min(pd[i-1][j], pd[i-1][j + (1 << (i-1))]);
while(q--)
{
f >> x >> y;
L = lg2[y - x + 1];
ans = min(pd[L][x], pd[L][y - (1 << L) + 1]);
g << ans << '\n';
}
return 0;
}