Pagini recente » Cod sursa (job #509463) | Cod sursa (job #1556275) | Cod sursa (job #1872821) | Cod sursa (job #2175560) | Cod sursa (job #2262927)
#include<iostream>
#include<fstream>
using namespace std;
#define nMAX 100005
#define iMAX 18
int rmq[iMAX][nMAX], lg[nMAX];
int main(){
ifstream in("rmq.in"); ofstream out("rmq.out");
int i, n, m, x, y;
in>>n>>m;
lg[1]=0;
for(i=1;i<=n;i++){
in>>rmq[0][i];
if(i!=1) lg[i]=lg[i/2]+1;
}
for(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) )] );
}
for(i=1; i<=m; i++){
in>>x>>y;
int dif=y-x+1;
out<<min(rmq[lg[dif]][x] , rmq[ lg[dif] ][ x + ( dif- (1<<lg[dif]) ) ] )<<'\n';
}
in.close(); out.close();
return 0;
}