Pagini recente » Cod sursa (job #1876129) | Cod sursa (job #2005317) | Cod sursa (job #2813469) | Cod sursa (job #1261243) | Cod sursa (job #3182969)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n;
int sp[100005][18];
void gen_sparse_table(){
for(int j = 1; (1 << j) <= n; j++){
for(int i = 1; i + (1 << j) - 1 <= n; i++)
sp[i][j] = min(sp[i][j - 1], sp[i + (1 << (j - 1))][j - 1]);
}
}
int range_minimum_query(int st, int dr){
int lg2 = (int)log2(dr - st + 1);
return min(sp[st][lg2], sp[dr - (1 << lg2) + 1][lg2]);
}
int main()
{
int m,i,st,dr;
fin >> n >> m;
for(i = 1; i <= n; i++) fin >> sp[i][0];
gen_sparse_table();
for(i = 1; i <= m; i++){
fin >> st >> dr;
fout << range_minimum_query(st,dr) << "\n";
}
return 0;
}