Pagini recente » Cod sursa (job #652299) | Cod sursa (job #651602) | Cod sursa (job #2710405) | Cod sursa (job #345409) | Cod sursa (job #769476)
Cod sursa(job #769476)
#include<fstream>
#define dim 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,i,j,w,x,y;
int R[dim][20],pow[dim];
int min(int a ,int b ){
if(a<b)
return a;
return b;
}
int main (){
f>>n>>m;
for(i=1;i<=n;i++)
f>>R[i][0];
for(i=2;i<=n;++i)
pow[i]=pow[i/2]+1;
for(i=1 ; (1<<i)<=n ;++i){
for(j=1 ;j+(1<<i)-1<=n;++j){
R[j][i]=min(R[j][i-1],R[j+(1<<(i-1))][i-1]);
}
}
for(i=1;i<=m;++i)
{
f>>x>>y;
w=pow[y-x+1];
g<<min(R[x][w],R[y-(1<<w)+1][w])<<"\n";
}
return 0;
}