Pagini recente » Cod sursa (job #2139080) | Cod sursa (job #2126052) | Cod sursa (job #1819749) | Cod sursa (job #2709737) | Cod sursa (job #1833906)
#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(int A[], int M[][NMAX], int N) {
for (int i = 0; i < N; ++i) {
for (int j = i; j < N; ++j) {
M[i][j] = i;
for (int k = i; k <= j; ++k) {
if (A[k] < A[M[i][j]]) {
M[i][j] = k;
}
}
}
}
}
int query(int A[], int M[][NMAX], int N, 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;
while(Q--) {
f >> x >> y;
g << A[query(A, M, N, x-1, y-1) + 1] << '\n';
}
return 0;
}