Pagini recente » Cod sursa (job #1824245) | Cod sursa (job #2479443) | Cod sursa (job #3196897) | Cod sursa (job #388691) | Cod sursa (job #2687333)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[18][100005];
int n;
int m;
int x,y;
int pwr[20];
void create_powers() {
pwr[0]=1;
for (int i=1;i<=18;i++) {
pwr[i]=2*pwr[i-1];
}
}
int main()
{
create_powers();
f >> n >> m;
for (int i=1;i<=n;i++) {
f >> rmq[0][i];
}
for (int i=1;i<=17;i++) {
for (int j=1;j<=n;j++) {
rmq[i][j] = min(rmq[i-1][j] , rmq[i-1][j+pwr[i-1]]);
}
}
for (int k=1;k<=m;k++) {
f >> x >> y;
for (int i=17;i>=0;i--) {
if (y-x+1>=pwr[i]) {
g << min(rmq[i][x],rmq[i][y-pwr[i]+1]) << '\n';
break;
}
}
}
return 0;
}