Pagini recente » Cod sursa (job #277652) | Cod sursa (job #428262) | Cod sursa (job #2387073) | Cod sursa (job #2405510) | Cod sursa (job #2635450)
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <climits>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
ifstream f("rmq.in");
ofstream o("rmq.out");
int v[100005][24];
int n, m;
int low, high;
int lg[100005];
void rmq()
{
for (size_t i = 1; i <= n; i++)
{
int k;
f >> k;
v[i][0] = k;
}
for (size_t j = 1; (1 << j) <= n; j++)
{
for (size_t i = 1; i <= n - (1 << j) + 1; i++)
{
v[i][j] = min(v[i][j - 1], v[i + (1 << (j - 1))][j - 1]);
}
}
}
int main()
{
f >> n >> m;
for (size_t i = 2; i < n; i++)
{
lg[i] = lg[i / 2] + 1;
}
rmq();
while (m--)
{
f >> low >> high;
int len = high - low + 1;
int log2 = lg[len];
o << min(v[low][log2], v[high - (1 << log2) + 1][log2]) << "\n";
}
}