Pagini recente » Cod sursa (job #2099188) | Cod sursa (job #177809) | Cod sursa (job #751560) | Cod sursa (job #1652952) | Cod sursa (job #1083074)
// Include
#include <fstream>
#include <algorithm>
using namespace std;
// Constante
const int sz = (int)1e5+1;
// Variabile
ifstream in("rmq.in");
ofstream out("rmq.out");
int num, questions;
int LG[sz];
int rmq[18][sz];
// Main
int main()
{
in >> num >> questions;
for(int i=1 ; i<=num ; ++i)
in >> rmq[0][i];
for(int i=2 ; i<=num ; ++i)
LG[i] = LG[i/2]+1;
int limit;
for(int i=1 ; (1<<i)<=num ; ++i, limit=num-(1<<i)+1)
for(int j=1 ; j<=limit ; ++j)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
int left, right;
while(questions--)
{
in >> left >> right;
int line = LG[right-left+1];
out << min(rmq[line][left], rmq[line][right-(1<<line)+1]) << '\n';
}
in.close();
out.close();
return 0;
}