Pagini recente » Cod sursa (job #600585) | Cod sursa (job #2205017) | Cod sursa (job #2814630) | Cod sursa (job #1657280) | Cod sursa (job #3305583)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n , m , r[17][100001] , st , dr;
int E[100001];
int main(){
fin >> n >> m;
for(int i = 1 ; i <= n ;i ++)
fin >> r[0][i];
for(int p = 1 ; (1<<p) <= n ; p++)
for(int i = 1 ; i <= n ; i++){
r[p][i] = r[p - 1][i];
int j = i + (1<<(p - 1));
if(j <= n && r[p][i] > r[p - 1][j])
r[p][i] = r[p - 1][j];
}
E[1] = 0;
for(int i = 2 ; i <= n ; i++)
E[i] = 1 + E[i / 2];
for(int i = 1 ; i <= m ; i++){
fin >> st >> dr;
int e = E[dr - st + 1];
int len = 1<<e;
fout << min(r[e][st] , r[e][dr - len + 1]) << '\n';
}
}