Pagini recente » Cod sursa (job #2198433) | Diferente pentru problema/inghetare intre reviziile 13 si 12 | Monitorul de evaluare | Cod sursa (job #2766999) | Cod sursa (job #2888530)
#include <bits/stdc++.h>
using namespace std;
int rmq[21][100001];
int main(){
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int a,b,n,p=1,ap=0,q,l,i,min1=10000001;
fin>>n>>q;
for(i=1;i<=n;i++){
fin>>rmq[0][i];
}
while(p<n){
p*=2;
ap++;
for(i=1;i+p-1<=n;i++){
rmq[ap][i]=min(rmq[ap-1][i],rmq[ap-1][i+p/2]);
// cout<<rmq[ap][i]<<" ";
}
//cout<<"\n";
}
for(i=1;i<=q;i++){
fin>>a>>b;
l=b-a+1;
p=1;
ap=0;
while(p<=l){
p*=2;
ap++;
}
p/=2;
ap--;
min1=min(rmq[ap][a],rmq[ap][b-p+1]);
fout<<min1<<"\n";
}
return 0;
}