Pagini recente » Cod sursa (job #3273447) | Cod sursa (job #842655) | Cod sursa (job #1243304) | Cod sursa (job #191601) | Cod sursa (job #3264884)
#include <bits/stdc++.h>
using namespace std;
const string file="rmq";
ifstream f(file+".in");
ofstream g(file+".out");
#define DD 100001
int r[17][DD],e[DD];
int n,m,dr,st,mini,p,l,E,j;
int main(){
f>>n>>m;
for(int i=1; i<=n; ++i) f>>r[0][i];
for(int p=1; (1<<p)<=n; ++p){
for(int i=1; i<=n; ++i){
r[p][i]=r[p-1][i];
j=i+(1<<(p-1));
if(j<=n && r[p][i]>r[p-1][j])
r[p][i]=r[p-1][j];
}
}
e[1]=0;
for(int i=2; i<=n; ++i) e[i]=1+e[i/2];
for(int i=1; i<=m; ++i){
f>>st>>dr;
E=e[dr-st+1];
l=(1<<E);
g<<min(r[E][st],r[E][dr-l+1])<<'\n';
}
return 0;
}