Pagini recente » Cod sursa (job #1670839) | Cod sursa (job #1224141) | Cod sursa (job #2456688) | Cod sursa (job #879720) | Cod sursa (job #2581390)
#define NMAX 100005
#include <fstream>
#include <cmath>
using namespace std;
#define LOGMAX (int)(log2(NMAX))+2
#define log(n) (int)(log2(n))
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, q, a, b;
int rmq[LOGMAX][NMAX];
void form_rmq()
{
for(int l = 1; (1<<l)<=n; l++){
for(int i=0; i + (1<<l) - 1 < n; i++)
rmq[l][i] = min(rmq[l-1][i], rmq[l-1][i+(1<<(l-1))]);
}
}
int main()
{
f>>n>>q;
for(int i = 0; i < n; ++i)
f>>rmq[0][i];
form_rmq();
for(int i = 1; i <= q; ++i)
{
f>>a>>b;
a--, b--;
int val = log(b - a + 1);
g<<min(rmq[val][a], rmq[val][b-(1<<(val))+1])<<'\n';
}
return 0;
}