Pagini recente » Cod sursa (job #370695) | Cod sursa (job #2400457) | Cod sursa (job #699665) | Cod sursa (job #2615256) | Cod sursa (job #3238510)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
unsigned int a[100000], log[100000], m[18][100000];
int main() {
log[1] = 0;
unsigned int N, M, p, i, l, r;
fin >> N >> M;
for(i=0; i<N; ++i) {
fin >> a[i];
m[0][i] = a[i];
}
for(i=2; i<=N; ++i) {
log[i] = log[i/2] + 1;
}
for(p=1; (1<<p) <= N; ++p) {
for(i=0; i<=N-(1<<p); ++i) {
m[p][i] = min(m[p-1][i], m[p-1][i+(1<<(p-1))]);
//cout << i << '\t' << i+(1<<p)-1 << '\t' << m[p][i] << '\n';
}
}
for(i=0; i<M; ++i) {
fin >> l >> r;
--l, --r;
p = log[r-l+1];
fout << min(m[p][l], m[p][r-(1<<p)+1]) << '\n';
}
}