Pagini recente » Cod sursa (job #2062896) | Cod sursa (job #2825358) | Cod sursa (job #895186) | Cod sursa (job #2117334) | Cod sursa (job #3002517)
#include <iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m;
struct query{
int l, r;
};
vector<int>v;
int look[10001][10001];
void preprocess() {
for (int i = 0; i < n; i++) {
look[i][i] = i;
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (v[look[i][j - 1]] < v[j]) {
look[i][j] = look[i][j-1];
}
else {
look[i][j] = j;
}
}
}
}
void solve() {
while(m--){
query q;
in >> q.l >> q.r;
q.l--;
q.r--;
if (q.l > q.r)swap(q.l, q.r);
//out << q.l << " " << q.r << endl;
out << v[look[q.l][q.r]]<<"\n";
}
}
void afisare() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
out << look[i][j] << " ";
}
out << endl;
}
}
int main()
{
in >> n >> m;
for (int i = 0; i < n; i++) {
int x;
in >> x;
v.push_back(x);
}
preprocess();
//afisare();
solve();
}