Pagini recente » Cod sursa (job #1495638) | Cod sursa (job #1638597) | Cod sursa (job #461259) | Cod sursa (job #1919008) | Cod sursa (job #1518926)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, x, y;
int rmq[18][100002], lg[100002];
inline int minim(int a, int b)
{
return (a<b) ? a:b;
}
int main()
{
int i,j;
fin>>n>>m;
for (i=1; i<=n; ++i)
fin>>rmq[0][i];
lg[1]=0;
for (i=2; i<=n; ++i) /// Vector cu logaritmi !
lg[i]=lg[i>>1]+1;
for (i=1; (1<<i)<=n; ++i)
for (j=1; j<=n-(1<<i)+1; ++j)
rmq[i][j]=minim(rmq[i-1][j],rmq[i-1][j+1]);
for (i=1; i<=m; ++i)
{
fin>>x>>y;
int diff,line,s;
diff=y-x+1;
line=lg[diff];
s=diff-(1<<line);
fout<<minim(rmq[line][x],rmq[line][x+s])<<'\n';
}
return 0;
}