Pagini recente » Cod sursa (job #1188662) | Cod sursa (job #3170439) | Cod sursa (job #972520) | Cod sursa (job #1914520) | Cod sursa (job #3030836)
#include <fstream>
#include <vector>
#include <list>
#include <queue>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, q, x, y, k, s, v;
int a[21][100005], lg[100005];
int main()
{
f >> n >> q;
for (int i = 1; i <= n; i++)
{
f >> a[0][i];
if (i != 1)
lg[i] = 1 + lg[i >> 1];
}
for (int i = 1; i <= lg[n]; i++)
for (int j = (1 << i); j <= n; j++)
a[i][j] = min(a[i - 1][j], a[i - 1][j - (1 << (i - 1))]);
while (q--)
{
f >> x >> y;
int l = lg[y-x+1];
g << min(a[1][x+(1<<l)-1],a[l][y]) << '\n';
}
return 0;
}