Pagini recente » Cod sursa (job #1065695) | Cod sursa (job #2215606) | Cod sursa (job #1218464) | Cod sursa (job #2124603) | Cod sursa (job #2801621)
#include <bits/stdc++.h>
#define Nmax 100005
#define Log 17
using namespace std;
int m[Nmax][Log], a[Nmax];
int n, i, j, q, x, y;
int querry(int L, int R)
{
int lungime = R - L + 1, k = 0;
while((1 << (k + 1)) <= lungime)
k++;
return min(m[L][k], m[R - (1 << k) + 1][k]);
}
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
f >> n >> q;
for(i = 1; i <= n; i++)
{
f >> a[i];
m[i][0] = a[i];
}
for(j = 1; (1 << j) < n; j++)
for(i = 1; i + (1 << j) - 1 <= n; i++)
m[i][j] = min(m[i][j - 1], m[i + (1 << (j - 1))][j - 1]);
for(i = 1; i <= q; i++)
{
f >> x >> y;
g << querry(x, y) << "\n";
}
return 0;
}