Pagini recente » Cod sursa (job #1090651) | Cod sursa (job #341287) | Cod sursa (job #1348188) | Cod sursa (job #792065) | Cod sursa (job #1513315)
# include <fstream>
# define DIM 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[18][DIM],n,m,i,p[18],l[DIM],maxp,j,a,b,c,d;
int main () {
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[0][i];
}
p[0]=1;
for(i=1;p[i-1]<=n;i++){
p[i]=p[i-1]*2;
}
maxp=i-1;
for(i=1;i<=maxp;i++){
for(j=1;j<=n;j++){
v[i][j]=v[i-1][j];
if(j+p[i-1]<=n)
v[i][j]=min(v[i][j],v[i-1][j+p[i-1]]);
}
}
l[1]=0;
for(i=2;i<=n;i++){
l[i]=l[i/2]+1;
}
for(i=1;i<=m;i++){
fin>>a>>b;
c=a;
d=b;
a=min(c,d);
b=max(c,d);
fout<<min(v[l[a]][a],v[l[a]][b-p[l[a]]])<<" ";
}
return 0;
}