Pagini recente » Cod sursa (job #2169767) | Cod sursa (job #1499559) | Cod sursa (job #678181) | Cod sursa (job #2485875) | Cod sursa (job #2153805)
#include <iostream>
#include <fstream>
#define MAX 100010
using namespace std;
int n,m,ii,mri,a,b,ans,p2[MAX];
int mi[MAX][17];
int main()
{
ifstream f ("rmq.in");
ofstream g ("rmq.out");
f>>n>>m; for(int i=1;i<=n;i++)f>>mi[i][0];
for(int sp=1;sp<=16;sp++)
for(int i=1;i<=n;i++){
mi[i][sp]=mi[i][sp-1];
ii=i+(1<<(sp-1));
if(ii<=n)mi[i][sp]=min(mi[i][sp],mi[ii][sp-1]);
}
for(int sp=0;sp<=16;sp++)
for(int i=(1<<sp);i<=n&&i<(1<<(sp+1));i++)p2[i]=sp;
for(int i=1;i<=m;i++){
f>>a>>b;
g<<min(mi[a][p2[b-a+1]],mi[b-(1<<p2[b-a+1])+1][p2[b-a+1]])<<'\n';
}
f.close();
g.close();
return 0;
}