Pagini recente » Cod sursa (job #1660925) | Cod sursa (job #3192590) | Cod sursa (job #1828030) | Cod sursa (job #1932025) | Cod sursa (job #3224874)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#define MAXN 100000
#define LOGN 17
#define DEBUG 0
using namespace std;
int v[MAXN], rmq[MAXN][LOGN];
int main(){
int n, q;
ifstream fin ("rmq.in");
fin >> n >> q;
for(int i = 0; i < n; i ++){
fin >> v[i];
rmq[i][0] = v[i];
}
for(int i = 1; (1 << i) <= n; i ++){
for(int j = 0; j + (1 << i) <= n; j ++){
rmq[j][i] = min(rmq[j][i - 1], rmq[j + (1 << (i - 1))][i - 1]);
}
}
ofstream fout ("rmq.out");
for(int qi = 0; qi < q; qi ++){
int a, b;
fin >> a >> b;
int pow = log2(b - a + 1);
int minv = min(rmq[a][pow], rmq[b - (1 << pow) + 1][pow]);
fout << minv << "\n";
}
fin.close();
fout.close();
if(DEBUG)
for(int i = 0; (1 << i) <= n; i ++){
for(int j = 0; j + (1 << i) <= n; j ++)
printf("%d ", rmq[j][i]);
printf("\n");
}
return 0;
}