Pagini recente » Cod sursa (job #2261126) | Cod sursa (job #2892488) | Cod sursa (job #2095342) | Cod sursa (job #2023086) | Cod sursa (job #2502056)
using namespace std;
#include<iostream>
#include<fstream>
int st[100001][26], k;
int n, v[100001], logg[100001], m, inc, sf;
int main() {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
fin >> n >> m;
logg[1] = 0;
for (int i = 2; i<100001; i++) {
logg[i] = logg[i/2]+1;
}
for (int i = 0; i<n; i++) {
fin >> v[i];
st[i][0] = v[i];
}
k = logg[n];
for (int j = 1; j<=k; j++){
for (int i = 0; i+(1<<j)<=n; i++) {
st[i][j] = min(st[i][j-1], st[i+(1<<(j-1))][j-1]);
}
}
/*for (int i = 0; i<=n; i++) {
for (int j = 0; j<=k; j++) {
cout << st[i][j] << " ";
}
cout << endl;
}
cout << endl;*/
for (int i = 1; i<=m; i++) {
fin >> inc >> sf;
inc--;
sf--;
int j = logg[sf-inc+1];
//cout << j << endl;
fout << min(st[inc][j], st[sf-(1<<j)+1][j]) << endl;
// cout << inc << " " << j << " " << sf-(1<<j)+1 << " " << j << endl;
}
fin.close();
fout.close();
return 0;
}