Pagini recente » Cod sursa (job #990860) | Cod sursa (job #521965) | Cod sursa (job #2421990) | Cod sursa (job #2825862) | Cod sursa (job #3134390)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int main()
{
int n, m;
fin >> n >> m;
int v[n+1] , v2[17][n+1];
v[1] = 0;
for(int i = 2; i <= n; i++)
{
v[i] = v[i/2]+1;
}
for(int i = 1; i <= n; i++)
{
fin >> v2[0][i];
}
for(int i = 1; (1 << i) <=n; i++)
{
int x = 1 << i;
for(int j = 1; j + x - 1 <= n; j++)
{
int a = v2[i - 1][j];
int b = v2[i - 1][j + (x >> 1)];
v2[i][j] = min(a,b);
}
}
for (int i = 1; i <= m; i++)
{
int st, dr;
fin >> st >> dr;
int d = dr - st + 1;
int rezultat = min(v2[v[d]][st], v2[v[d]][dr - (1 << v[d]) + 1]);
fout << rezultat << endl;
}
return 0;
}