Pagini recente » Cod sursa (job #2550870) | Cod sursa (job #1375721) | Cod sursa (job #1886224) | Cod sursa (job #2414517) | Cod sursa (job #2243424)
#include <iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M, m[100001][17];
char lg2[100001];
int main()
{
int x, y;
f >> N >> M;
lg2[0] = -1;
for(int i = 1; i <= N; i++)
{
f >> m[i][0];
lg2[i] = lg2[i >> 2] + 1;
}
lg2[0] = 0;
for(int j = 1; 1 << j <= N; j++)
{
int z = 1 << j;
for(int i = 1; i + z - 1 <= N; i++)
if(m[i][j - 1] < m[i + z / 2][j - 1])
m[i][j] = m[i][j - 1];
else
m[i][j] = m[i + z / 2][j - 1];
}
//cout<<log2(100000);
for(int i = 0; i < M; i++)
{
f >> x >> y;
int t = lg2[y - x];
g << min(m[x][t], m[y - (1 << t) + 1][t]) << '\n';
}
return 0;
}