Pagini recente » Cod sursa (job #1497660) | Cod sursa (job #1512937) | Cod sursa (job #1859665) | Cod sursa (job #2274624) | Cod sursa (job #2035926)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int v[100001];
int a[100001][17];
int main(){
int i, j, n, m, r, log, n1, n2;
in >> n >> m;
for (i=1; i<=n; i++){
in >> v[i];
a[i][0] = i;
}
for (j=1; (1<<j)<=n; j++){
for (i=1; i<=n-(1<<j-1); i++)
a[i][j] = (v[a[i][j-1]] < v[a[i+(1<<j-1)][j-1]]) ? a[i][j-1] : a[i+(1<<j-1)][j-1];
for (; i<=n; i++)
a[i][j] = a[i][j-1];
}
for (i=1; i<=m; i++){
in >> n1 >> n2;
log = log2((double)n1-n2+1);
r = (v[a[n1][log]] < v[a[n2-(1<<log)+1][log]]) ? a[n1][log] : a[n2-(1<<log)+1][log];
out << v[r] << '\n';
}
}