Pagini recente » Cod sursa (job #2689866) | Cod sursa (job #3154640) | Cod sursa (job #661356) | Cod sursa (job #1760686) | Cod sursa (job #3284044)
#include <vector>
#include <fstream>
#include <bitset>
#include <queue>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m;
int mat[100005][17];
int put[100005];
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
{
int x;
fin >> x;
mat[i][0] = x;
}
put[1] = 0;
for (int i = 2; i <= n; i++)
put[i] = put[i / 2] + 1;
for (int j = 1; j <= 17; j++)
for (int i = 1; i + (1 << j) - 1 <= n; i++)
mat[i][j] = min(mat[i][j - 1], mat[i + (1 << (j-1))][j - 1]);
for (int i = 1; i <= m; i++)
{
int x, y;
fin >> x >> y;
int len = y - x + 1;
int val = put[len];
fout << min(mat[x][val], mat[y - (1 << val) + 1][val]) << "\n";
}
return 0;
}