Pagini recente » Cod sursa (job #168354) | Cod sursa (job #481284) | Cod sursa (job #236157) | Cod sursa (job #515513) | Cod sursa (job #3156971)
#include <fstream>
#define NMAX 100000
#define LOG 17
using namespace std;
int lg[NMAX],s[NMAX][LOG];
int query(int i, int j){
int lun = j - i + 1;
int k = lg[lun];
return min(s[i][k], s[j -(1<<k)+1][k]);
}
int main(){
int n, m, i, j, st, dr, k;
ifstream cin("rmq.in");
cin>>n>>m;
lg[1] = 0;
for(int i = 2;i<=n;i++){
lg[i] = 1 + lg[i / 2];
}
for(i = 0;i<n;i++){
cin>>s[i][0];
}
for(j = 1;j<=LOG;j++){
for(i = 0;(i + (1<<j)) - 1 < n;i++){
s[i][j] = min(s[i][j - 1], s[i + (1<<(j - 1))][j - 1]);
}
}
ofstream cout("rmq.out");
for(i = 0;i<m;i++){
cin>>st>>dr;
cout<<query(st - 1, dr - 1)<<"\n";
}
cin.close();
cout.close();
return 0;
}