Pagini recente » Cod sursa (job #2344183) | Cod sursa (job #3199146) | Cod sursa (job #546643) | Cod sursa (job #2850210) | Cod sursa (job #2305554)
#include <fstream>
#include <vector>
const int MAX_N = 100000;
const int LOG_MAX_N = 17;
int r[MAX_N][LOG_MAX_N];
int l[MAX_N + 1];
int main()
{
std::ifstream fin("rmq.in");
int n, k;
fin >> n >> k;
for(int i = 0; i < n; i++)
fin >> r[i][0];
l[1] = 0;
for(int i = 2; i < n; i++)
l[i] = 1 + l[i / 2];
for(int i = 0; i < n; i++)
for(int j = 1; (1 << j) <= i + 1; j++)
r[i][j] = std::min(r[i - (1 << (j - 1))][j - 1], r[i][j - 1]);
std::ofstream fout("rmq.out");
for(;k != 0; k--)
{
int x, y;
fin >> x >> y;
x --;
y --;
fout << std::min(r[x + (1 << l[y - x + 1]) - 1][l[y - x + 1]], r[y][l[y - x + 1]]) << "\n";
}
return 0;
}