Pagini recente » Cod sursa (job #3275570) | Cod sursa (job #3244413) | Cod sursa (job #247139) | Cod sursa (job #1972833) | Cod sursa (job #873381)
Cod sursa(job #873381)
// Include
#include <fstream>
#include <algorithm>
using namespace std;
// Constante
const int sz = (int)1e5+1;
const int lgsz = 21;
// Variabile
ifstream in("rmq.in");
ofstream out("rmq.out");
int num, questions;
int lg[sz];
int rmq[lgsz][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;
for(int i=1 ; (1<<i) <=num ; ++i)
for(int j=1 ; j<=num-(1<<i)+1 ; ++j)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+(1<<i-1)]);
while(questions--)
{
int left, right;
in >> left >> right;
int dist = right - left+1;
int log = lg[dist];
int val = min(rmq[log][left], rmq[log][right-(1<<log)+1]);
out << val << '\n';
}
in.close();
out.close();
return 0;
}