Pagini recente » Cod sursa (job #3211225) | Cod sursa (job #1511205) | Cod sursa (job #2200955) | Cod sursa (job #3273479) | Cod sursa (job #1257438)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
#define NMAX 100005
int RMQ[20][NMAX],N,Log2[NMAX],M;
void Init(){
for (int j = 1; j <= N; j++) {
f>>RMQ[0][j];
}
for (int i = 2; i <= N; i++) {
Log2[i] = Log2[i/2]+1;
}
}
void GenerateRMQ(){
for(int i=1;(1<<i)<=N;i++){
for(int j=1;j<=N-(1<<i)+1;j++){
RMQ[i][j]=min(RMQ[i-1][j],RMQ[i-1][j+(1<<(i-1))]);
}
}
}
void Read(){
f>>N>>M;
Init();
GenerateRMQ();
int x,y;
for (int i = 1; i <= M; i++) {
f>>x>>y;
int dif = y-x+1;
int k = Log2[dif];
g<<min(RMQ[k][x],RMQ[k][y-(1<<k)+1])<<"\n";
}
}
int main()
{
Read();
return 0;
}