Pagini recente » Istoria paginii preoni-2006/runda-4/clasament-10 | Cod sursa (job #370074) | Cod sursa (job #872327) | Cod sursa (job #1089294) | Cod sursa (job #2787980)
#include <bits/stdc++.h>
#define NMAX 100005
#define LOG 17
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, dp[LOG][NMAX], lg[NMAX];
int main()
{
f >> n >> m;
for(int i = 1; i <= n; i++){
f >> dp[0][i];
}
for(int i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
for(int i = 1; i <= lg[n]; i++){
for(int j = 1; j + (1 << i) - 1 <= n; j++)
dp[i][j] = min(dp[i - 1][j + (1 << (i - 1))], dp[i - 1][j]);
}
int x, y;
for(int i = 1; i <= m; i++){
f >> x >> y;
if(y < x)
swap(y, x);
int l = y - x + 1;
int k = lg[l];
g << min(dp[k][x], dp[k][y - (1 << k) + 1]) << '\n';
}
return 0;
}