Pagini recente » Cod sursa (job #3184205) | Cod sursa (job #1850097) | Cod sursa (job #2408646) | Cod sursa (job #2664903) | Cod sursa (job #2544936)
using namespace std;
#define fisier "rmq"
#ifdef fisier
#include <fstream>
ifstream in(fisier ".in");
ofstream out(fisier ".out");
#else
#include <iostream>
#define in cin
#define out cout
#endif
#include <algorithm>
int v[100000], n;
int secv_min(int st, int dr) {
if (st == dr)
return v[st]; // v[dr];
if (st == dr - 1)
return min(v[st], v[dr]);
int m = (st + dr) / 2;
return min(secv_min(st, m), secv_min(m + 1, dr));
/**
N | APELURI DE MIN
--------------------
1 | 0
2 | 1
3 | 2
4 | 3
5 | 4
6 | 5
n | n - 1
abcdefhg (1)
abcd efhg | (2)
ab cd | ef hg | (4)
O( sigma(k = 0, log2(n))(2^k) )
**/
}
int main() {
int m, x, y;
in >> n >> m;
for (int i = 0; i < n; i++) {
in >> v[i];
}
while (m--) {
in >> x >> y;
out << secv_min(x-1, y-1) << '\n';
}
}
//