Pagini recente » Cod sursa (job #2247547) | Cod sursa (job #1175639) | Cod sursa (job #143694) | Cod sursa (job #2711752) | Cod sursa (job #2614068)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#define MAXV 100001
using namespace std;
int main() {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, x, y;
int v[MAXV][20];
/// Read data
fin>>n>>m;
for(int i=0;i<n;i++){
fin>>x;
v[i][0] = x;
}
int pow = 2;
for(int j=1;pow<=n;j++){
for(int i=0;i+pow-1<n;i++)
v[i][j] = min(v[i][j-1], v[i+pow/2][j-1]);
pow*=2;
}
for(int i=0;i<m;i++){
fin>>x>>y;
x--;y--;
int lg = static_cast<int>(log2(y-x+1));
fout<<min(v[x][lg], v[y-lg*2+1][lg])<<'\n';
}
return 0;
}