Pagini recente » Cod sursa (job #1935899) | Cod sursa (job #2310140) | Cod sursa (job #1919200) | Cod sursa (job #153866) | Cod sursa (job #2964670)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
const int LOG = 17;
int n , q , v[100005] , m[100005][32] , x ,y;
int querry (int a , int b)
{
int k = 0;
while ( (1 << k) <= (b - a + 1))
k++;
k--;
return min (m[a][k] , m[b - (1 << k) + 1][k]);
}
int main()
{
f >> n >> q;
for (int i = 1 ; i <= n; i++)
f >> v[i];
for (int i = 1 ; i <= n ; i++)
m[i][0] = v[i];
for (int k = 1 ; k <= 17 ; k++)
{
for (int i = 1 ; i + (1 << k) - 1 <= n ; i++) // 1 << x inseamna 2 la puterea x
{
m[i][k] = min (m[i][k - 1] , m[i +(1<<(k - 1))][k - 1]);
}
}
for (int i = 1 ; i <= q ; i++)
{
f >> x >> y;
g << querry (x , y) << '\n';;
}
return 0;
}