Pagini recente » Cod sursa (job #1799044) | Cod sursa (job #1123982) | Cod sursa (job #1651692) | Cod sursa (job #1799117) | Cod sursa (job #1834094)
#include <fstream>
#include <iostream>
const int NMAX = 10005;
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int Q, x, y;
int M[NMAX][NMAX];
int A[NMAX];
int N;
void preproces() {
for (int i = 0; i < N; ++i) {
M[i][i] = i;
}
for (int i = 0; i < N; ++i) {
for (int j = i + 1; j < N; ++j) {
if (A[j] < A[M[i][j-1]]) {
M[i][j] = j;
}
else {
M[i][j] = M[i][j-1];
}
}
}
}
int query(int i, int j) {
return M[i][j];
}
int main() {
f >> N >> Q;
for (int i = 0; i < N; ++i) {
f >> A[i];
}
/*clock_t before = clock();
preproces(A, M, N);
clock_t difference = clock() - before;
double msec = difference * 1000 / CLOCKS_PER_SEC;
cout << msec;*/
preproces();
while(Q--) {
f >> x >> y;
g << A[query(x-1, y-1)] << '\n';
}
return 0;
}