Pagini recente » Cod sursa (job #1127919) | Cod sursa (job #2415918) | Cod sursa (job #956334) | Cod sursa (job #1642268) | Cod sursa (job #1222258)
#include <fstream>
#define DIM 100011
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m;
int a[21][DIM],p[DIM],v[DIM];
int main(void){
register int x,y,i,j,iv;
f>>n>>m;
p[1]=0;
f>>v[1];
a[0][1]=v[1];
for(i=2;i<=n;i++)
f>>v[i],p[i]=1+p[i/2],a[0][i]=v[i];
for(j=1;(1<<j)<=n;j++){
for(i=1;i<=n;i++){
a[j][i]=a[j-1][i];
iv=(1<<(j-1))+i;
if(iv<=n && a[j-1][iv]<=a[j][i]) a[j][i]=a[j-1][iv];
}
}
for(;m>0;m--){
f>>x>>y;
j=p[y-x+1],iv=y-(1<<j)+1;
g<<min(a[j][x],a[j][iv])<<"\n";
}
f.close();
g.close();
return 0;
}