Pagini recente » Cod sursa (job #27088) | Cod sursa (job #2617535) | Cod sursa (job #2531249) | Cod sursa (job #508) | Cod sursa (job #1991537)
#include<fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n,m,k,i,p[20],minim,a[20][100001],x,y,aux[100001],h,alfa;
int main(){
in >> n >> m;
for( i = 1; i <= n; i ++ ){
in >> a[0][i];
}
p[0] = 1;
for( i = 1; i <= 18; i ++ ){
p[i] = p[i-1]*2;
}
for( i = 2; i <= n; i ++ ){
aux[i] = aux[i/2]+1;
}
for( k = 1; k <= 18; k ++ ){
for( i = 1; i <= n -p[k] + 1; i ++ ){
a[k][i] = min( a[k-1][i], a[k-1][i + p[k-1] ] );
}
}
for( h = 1; h <= m; h ++ ){
in >> x >> y;
alfa = aux[y-x+1];
minim = min( a[alfa][x],a[alfa][y-p[aux[y-x+1]] + 1 ] );
out << minim <<"\n";
}
return 0;
}