Pagini recente » Cod sursa (job #3287697) | Cod sursa (job #3263700) | Cod sursa (job #1646344) | Cod sursa (job #3262586) | Cod sursa (job #326828)
Cod sursa(job #326828)
#include <fstream>
#define min(a,b) a<b?a:b
using namespace std;
int N,M,RMQ[20][100010],i,pw,num,x,y,k;
int main(){
ifstream fi("rmq.in");
ofstream fo("rmq.out");
fi>>N>>M;
for (i=1;i<=N;++i) fi>>RMQ[0][i];
for (pw=1,num=2;num<=N;num*=2,++pw)
for (i=1;i<=N-num+1;++i) RMQ[pw][i]=min(RMQ[pw-1][i],RMQ[pw-1][i+(num/2)]);
for (i=1;i<=M;++i){
fi>>x>>y;
N=y-x+1;
for (pw=0,num=1;num<=N;num*=2,++pw);
--pw,num/=2;
k=min(RMQ[pw][x],RMQ[pw][y-num+1]);
fo<<k<<"\n";
}
fo.close();
return 0;
}