Pagini recente » Cod sursa (job #1583546) | Cod sursa (job #205800) | Solutii Autumn Warmup, Runda 1 | Cod sursa (job #2216129) | Cod sursa (job #2897218)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int NMAX = 100005;
const int logmax = 18;
int rmq[logmax][NMAX], log[NMAX], a[NMAX];
int n, m;
int main()
{
fin>>n>>m;
int l;
for(int i=1; i<=n; i++)
fin>>a[i];
log[1]=0;
for(int i=2; i<=n; i++)
log[i]=log[i/2]+1;
for(int i=1; i<=n; i++)
rmq[0][i]=a[i];
for(int i=1 ; (1 << i) <= n ; i++)
for(int j=1 ; j <= n - (1 << i) + 1 ; j++)
{
l = 1 << (i-1);
rmq[i][j] = min (rmq[i-1][j], rmq[i-1][j+1]);
}
for(int i=1; i<=m; i++)
{
int x, y, d, s;
fin>>x>>y;
d = y - x + 1;
l = log[d];
s = d - (1 << l);
fout<<min(rmq[l][x], rmq[l][x+s])<<'\n';
}
return 0;
}