Pagini recente » Cod sursa (job #794282) | Cod sursa (job #2253638) | Cod sursa (job #1242850) | Cod sursa (job #1061429) | Cod sursa (job #2870571)
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int MAX_N = 100050;
vector <int> rmq[17];
int lg2[MAX_N];
int n, q, st, dr;
int query(int j, int jj){
int i = lg2[jj-j+1];
jj -= (1<<i) - 1;
return min(rmq[i][j], rmq[i][jj]);
}
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin>>n>>q;
rmq[0].push_back(0);
for(int i=1; i<=n; i++){
fin>>st;
rmq[0].push_back(st);
}
for(int i=2; i<=n; i++)
lg2[i] = lg2[(i>>1)] + 1;
for(int i=1; i<=lg2[n]; i++){
rmq[i].push_back(0);
for(int j=1, jj; (jj=j+(1<<(i-1)))<=n; j++)
rmq[i].push_back(min(rmq[i-1][j], rmq[i-1][jj]));
}
while(q--){
fin>>st>>dr;
fout<<query(st, dr)<<"\n";
}
return 0;
}