Pagini recente » Cod sursa (job #3270945) | Cod sursa (job #1256357) | Cod sursa (job #2932753) | Cod sursa (job #1628993) | Cod sursa (job #1806954)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,q,i,j,nc,st,dr,put2c,d[22][100002],mi[100002];
int main ()
{
fin >> n >> q;
for(i=1;i<=n;i++) fin >> d[0][i];
mi[1]=0;
for(i=2;i<=n;i++) mi[i]=mi[i/2]+1;
for(i=1;(1<<i)<=n;i++)
{
for(j=1;j<=n;j++)
{
put2c=j+(1<<(i-1));
d[i][j]=min(d[i-1][j],d[i-1][put2c]);
}
}
for (i=1;i<=q;i++)
{
fin >> st >> dr;
nc=mi[dr-st+1];
fout << min(d[nc][st],d[nc][dr-(1<<nc)+1]) << "\n";
}
return 0;
}