Pagini recente » Istoria paginii runda/gr_3 | Cod sursa (job #1150180) | Cod sursa (job #1689930) | Cod sursa (job #2331851) | Cod sursa (job #2728554)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int st[100001][26];
int Log[100001];
int N, M;
int main(){
f >> N >> M;
for(int i = 1;i <= N;i++){
f >> st[i][0];
if(i > 1) Log[i] = Log[i / 2] + 1;
}
int K = Log[N];
for(int j = 1;j <= K;j++)
for(int i = 1;i + (1 << j) <= N + 1;i++){
st[i][j] = min(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
}
while(M--){
int L, R;
f >> L >> R;
int j = Log[R - L + 1];
g << min(st[L][j], st[R - (1 << j) + 1][j]) << "\n";
}
}