Pagini recente » Cod sursa (job #2412913) | Cod sursa (job #953009) | Cod sursa (job #2050650) | Cod sursa (job #1498019) | Cod sursa (job #2543740)
#include <fstream>
#define dim 100010
using namespace std;
int d[30][dim];
int l[dim];
int i,j,n,m,st,dr,len,e;
int main() {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
fin>>n>>m;
l[1]=0;
fin>>d[0][1];
for (i=2;i<=n;i++) {
l[i]=1+l[i/2];///l[i]=log i
fin>>d[0][i];
}
for (e=1;e<=l[n];e++) {
for (i=1;i<=n;i++) {
d[e][i]=d[e-1][i];
if (i+(1<<(e-1))<=n&&d[e-1][i+(1<<(e-1))]<d[e][i])
d[e][i]=d[e-1][i+(1<<(e-1))];
}
}
for (i=1;i<=m;i++) {
fin>>st>>dr;
len=dr-st+1;
fout<<min(d[l[len]][st],d[l[len]][dr-(1<<(l[len]))+1])<<"\n";
}
return 0;
}