Pagini recente » Cod sursa (job #1108124) | Cod sursa (job #2443518) | Cod sursa (job #2589564) | Cod sursa (job #1811374) | Cod sursa (job #2790661)
// Range minimum query.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
vector<int> v[20];
int n, m;
int Log2(int x) {
for (int i = 31; i >= 0; i--)
if (x & (1 << i))
return i;
return 0;
}
void build() {
int N = Log2(n);
for (int i = 1; i <= N; i++) {
v[i].push_back(0);
for (int j = 1; j <= n - (1 << i) + 1; j++)sa
v[i].push_back(min(v[i - 1][j], v[i - 1][j + (1 << (i - 1))]));
}
}
int main()
{
f >> n >> m;
v[0].push_back(0);
for (int i = 1; i <= n; i++) {
int x;
f >> x;
v[0].push_back(x);
}
build();
while (m--) {
int x, y;
f >> x >> y;
int p = Log2(y - x + 1);
g << min(v[p][x], v[p][y - (1 << p) + 1]) << '\n';
}
}