Pagini recente » Cod sursa (job #2965348) | Cod sursa (job #2129773) | Cod sursa (job #435138) | Cod sursa (job #2492333) | Cod sursa (job #718401)
Cod sursa(job #718401)
#include <fstream>
#include <vector>
using namespace std;
int N, M, m[100000][18], p_prev[100000];
int main()
{
ifstream in("rmq.in");
in >> N >> M;
vector<int> a(N + 1);
for(int i = 0; i < N; ++i)
in >> m[i][0];
for(int j = 1; j < N; ++j)
for(int i = 0; i + (1 << j) - 1 < N; ++i)
m[i][j] = min(m[i][j - 1], m[i + (1 << (j - 1))][j - 1]);
for(int i = 2; i < N; ++i)
p_prev[i] = p_prev[i/2];
ofstream out("rmq.out");
for(int i = 0, a, b; i < M; ++i)
{
in >> a >> b;
--a;
--b;
out << min(m[a][p_prev[b - a + 1]], m[b - (1 << p_prev[b - a + 1]) + 1][p_prev[b - a + 1]]) << "\n";
}
in.close();
out.close();
return 0;
}