Pagini recente » Cod sursa (job #1064294) | Cod sursa (job #2989483) | Cod sursa (job #146316) | Cod sursa (job #1004333) | Cod sursa (job #2903646)
#include <fstream>
#include <vector>
int meow[30][100010];
int Log (int x) {
int rez = 0;
while (x > 1) rez++, x /= 2;
return rez;
}
int main()
{
std::ifstream fin ("rmq.in");
std::ofstream fout ("rmq.out");
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i)
fin >> meow[0][i];
for (int i = 1; 1 << i <= n; ++i)
for (int j = 1; j <= n - (1 << i) + 1; ++j)
meow[i][j] = std::min(meow[i-1][j], meow[i - 1][j + (1 << (i - 1))]);
for (int i = 1; i <= m; ++i) {
int x, y;
fin >> x >> y;
fout << std::min(meow[Log(y - x + 1)][x], meow[Log(y - x + 1)][y + 1 - (1 << Log(y - x + 1))]) << '\n'; //daca nu mergi pling
}
return 0;
}