Pagini recente » Cod sursa (job #2097939) | Cod sursa (job #96524) | Cod sursa (job #1845960) | Cod sursa (job #1008677) | Cod sursa (job #2754737)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M, ST[100000][18], A[100000];
int main() {
std::ios::sync_with_stdio(false);
f >> N >> M;
for (int i = 0; i < N; i++) {
ST[i][0] = i;
f >> A[i];
}
for (int j = 1; (1 << j) <= N; j++) {
for (int i = 0; i + (1 << j) - 1 < N; i++)
ST[i][j] = (A[ST[i][j - 1]] < A[ST[i + (1 << (j - 1))][j - 1]]) ?
ST[i][j - 1] : ST[i + (1 << (j - 1))][j - 1];
}
/**for(int j=0;(1<<j)<=N;j++)
{
for(int i=0;i+(1<<j)-1<N;i++)
cout<<ST[i][j]<<' ';
cout<<'\n';
}*/
for (int i, j; f >> i >> j;) {
i--, j--;
int k = log2(j - i + 1);
g << min(A[ST[i][k]], A[ST[j - (1 << k) + 1][k]]) << '\n';
}
return 0;
}