Pagini recente » Cod sursa (job #1062432) | Rating Bucur Stefan (burcurici) | Cod sursa (job #1234478) | Cod sursa (job #2508405) | Cod sursa (job #2243275)
#include <iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M, m[100001][17];
int main()
{
int x, y;
f >> N >> M;
for(int i = 1; i <= N; i++)
f >> m[i][0];
for(int j = 1; 1 << j <= N; j++)
for(int i = 1; i + (1 << j) - 1 <= N; i++)
if(m[i][j - 1] < m[i + (1 << (j - 1))][j - 1])
m[i][j] = m[i][j - 1];
else
m[i][j] = m[i + (1 << (j - 1))][j - 1];
//cout<<log2(100000);
for(int i = 0; i < M; i++)
{
f >> x >> y;
int t = log2(y - x + 1);
g << min(m[x][t], m[y - (1 << t) + 1][t]) << '\n';
}
return 0;
}