Pagini recente » Cod sursa (job #2870294) | Cod sursa (job #2619639) | Cod sursa (job #1893661) | Cod sursa (job #2970341) | Cod sursa (job #2870650)
#include <bits/stdc++.h>
using namespace std;
const int s_vec = 100001;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int tabel[18][s_vec], nr_elem, nr_query;
void gen_sparse();
int query_ans(int l, int r);
int main()
{
fin >> nr_elem >> nr_query;
for (int i = 1; i <= nr_elem; i++)
fin >> tabel[0][i];
gen_sparse();
for (int i = 1; i <= nr_query; i++)
{
int l, r;
fin >> l >> r;
fout << query_ans(l, r) << "\n";
}
return 0;
}
void gen_sparse()
{
for (int put = 1; (1 << put) <= nr_elem; put++)
for (int i = 1; (1 << put) + i - 1 <= nr_elem; i++)
tabel[put][i] = min(tabel[put-1][i], tabel[put-1][i + (1 << put - 1)]);
return;
}
int query_ans(int l, int r)
{
int len = r - l + 1;
int put = log2(len);
int dif = len - (1 << put);
return min(tabel[put][l], tabel[put][l + dif]);
}