Pagini recente » Cod sursa (job #2401059) | Cod sursa (job #1321641) | Cod sursa (job #2903890)
#include <fstream>
#define NMAX 100002
#pragma GCC optimize ("O3")
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long int rmq[18][NMAX], N, M, lg[NMAX], a[NMAX];
int main()
{
long int x, y, i, j, k, d, s;
fin>>N>>M;
for(i = 1; i <= N; i++)
{
fin>>a[i];
rmq[0][i] = a[i];
}
lg[1] = 0;
for(i = 2; i <= N; ++i)
lg[i] = lg[i / 2] + 1;
for(i = 1; (1 << i) <= N; ++i)
for(j = 1; j <= N - (1 << i) + 1; ++j)
{
x = 1 << (i - 1);
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + x]);
}
for(i = 1; i <= M; i++)
{
fin>>x>>y;
d = y - x + 1;
k = lg[d];
s = d - (1 << k);
fout<<min(rmq[k][x], rmq[k][x + s])<<"\n";
}
return 0;
}