Pagini recente » Cod sursa (job #417185) | Cod sursa (job #937578) | Cod sursa (job #1786332) | Cod sursa (job #1036534) | Cod sursa (job #3238509)
#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;
fout << min(m[log[r-l+1]][l], m[log[r-l+1]][r-log[r-l+1]]) << '\n';
}
}