Pagini recente » Cod sursa (job #2191037) | Cod sursa (job #2579599) | Cod sursa (job #979839) | Cod sursa (job #1958950) | Cod sursa (job #3132544)
#include <iostream>
#include <fstream>
int v[100001][17];
int main(){
std::ifstream f("rmq.in");
std::ofstream g("rmq.out");
int n, m;
f >> n >> m;
for(int i = 1; i <= n; i++)
f >> v[i][0];
for(int p = 1; p < 17; p++)
for(int i = 1; i + (1 << p) - 1 <= n; i++)
v[i][p] = std::min(v[i][p - 1], v[i + (1 << (p - 1))][p - 1]);
for(int i = 0; i < m; i++){
int x, y;
f >> x >> y;
int lungime = y - x + 1;
if(lungime == 1)
g << v[x][0] << ' ';
else{
int p = 0;
while(lungime > (1 << p))
++p;
int mini = std::min(v[x][p - 1], v[y - (1 << (p - 1)) + 1][p - 1]);
g << mini << '\n';
}
}
return 0;
}