Pagini recente » Cod sursa (job #2508377) | Cod sursa (job #905580) | Borderou de evaluare (job #1605841) | Borderou de evaluare (job #1211074) | Cod sursa (job #1342505)
#include <fstream>
#define DIM 100011
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m;
int p[DIM],a[21][DIM];
int main(void){
register int i,j,jv,x,y,b;
f>>n>>m;
p[1]=0;
f>>a[0][1];
for(i=2;i<=n;i++) f>>a[0][i],p[i]=1+p[i/2];
for(i=1;(1<<i)<=n;i++){
for(j=1;j<=n;j++){
jv=j+(1<<(i-1));
a[i][j]=a[i-1][j];
if(jv<=n && a[i-1][jv]<a[i][j])
a[i][j]=a[i-1][jv];
}
}
for(i=1;i<=m;i++){
f>>x>>y;
b=p[y-x+1];
jv=y-(1<<b)+1;
g<<min(a[b][x],a[b][jv])<<"\n";
}
f.close();
g.close();
return 0;
}