Pagini recente » Cod sursa (job #2139233) | Cod sursa (job #417320) | Cod sursa (job #2607368) | Cod sursa (job #2856649) | Cod sursa (job #1518956)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n, m, Log[100010], V[20][100010];
int main()
{
fin >> n >> m;
Log[0] = -1;
for (int i = 1; i <= n; i ++)
{
fin >> V[0][i];
Log[i] = Log[i / 2] + 1;
}
for (int i = 1; i <= Log[n]; i ++)
{
for (int j1 = 1; j1 <= n - (1 << i) + 1; j1 ++)
{
int j2 = (1 << (i - 1));
V[i][j1] = min(V[i - 1][j1], V[i - 1][j1 + j2]);
}
}
int x, y;
while (m --)
{
fin >> x >> y;
int lin = Log[y - x + 1];
fout << min(V[lin][x], V[lin][y - (1 << lin) + 1]) << '\n';
}
return 0;
}