Pagini recente » Calibrare limite de timp | Cod sursa (job #2388264) | Cod sursa (job #774483) | Cod sursa (job #2576628) | Cod sursa (job #2575685)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,q,i,j,x,y,lg,mi,log[100005],v[100005][18];
int main(){
fin>>n>>m;
for(i=2;i<=n;i++)
log[i]=log[i/2]+1;
for(i=1;i<=n;i++){
fin>>x;
v[i][0]=x;
for(j=1;j<=log[i];j++)
v[i-(1<<j)+1][j]=min(v[i-(1<<j)+1][j-1],v[i-(1<<(j-1))+1][j-1]);
}
for(q=1;q<=m;q++){
fin>>x>>y;
lg=log[y-x+1];
mi=min(v[x][lg],v[y-(1<<lg)+1][lg]);
fout<<mi<<'\n';
}
return 0;
}