Pagini recente » Cod sursa (job #464864) | Cod sursa (job #2058949) | Cod sursa (job #603932) | Cod sursa (job #2284670) | Cod sursa (job #573634)
Cod sursa(job #573634)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,a[100015],rmq[20][100015],k,i,j,x,y,p;
void preg_rmq() {
for(i=0;i<n;i++) {
rmq[0][i]=a[i];
}
for(j=1; (1<<j)<=n;j++) {
for(i=0;i+ (1<<j)-1<n;i++) {
rmq[j][i]=min(rmq[j-1][i],rmq[j-1][i+(1<<(j-1))]);
}
}
}
inline int query(int x, int y) {
k=(int) (log(y-x+1)/log(2));
return min(rmq[k][y- (1<<k) +1],rmq[k][x]);
}
int main()
{
fin>>n>>m;
for(i=0;i<n;i++) {
fin>>a[i];
}
preg_rmq();
for(i=1;i<=m;i++) {
fin>>x>>y;
fout<<query(x-1,y-1)<<"\n";
}
fout.close();
return 0;
}