Pagini recente » Cod sursa (job #3178142) | Cod sursa (job #1094707) | Cod sursa (job #1767343) | Cod sursa (job #2862530) | Cod sursa (job #2295250)
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
std::vector<int> rmq(const std::vector<int>& input, const std::vector< std::pair<int, int> >& queries) {
vector<int> v(queries.size(),0);
vector< vector<int> > a;
vector<int> aux(input.size(), 0);
for (int i = 0; i < input.size(); i++)
a.push_back(aux);
for (int i = 0; i < input.size(); i++) {
for (int j = i; j < input.size(); j++) {
if (i == j)
a[i][j] = input[i];
else
a[i][j] = min(a[i][j-1], input[j]);
}
}
for (int i = 0; i < queries.size(); i++) {
int f, l;
f = queries[i].first;
l = queries[i].second;
v[i] = a[f][l];
}
return v;
}
int main()
{
int N, M, x, y;
fin >> N >> M;
vector<int> raspuns(M, 0);
vector<int> v;
vector< pair<int, int> > queries;
for (int i = 0; i < N; i++) {
fin >> x;
v.push_back(x);
}
for (int i = 0; i < M; i++) {
fin >> x >> y;
queries.push_back(make_pair(x, y));
}
raspuns = rmq(v, queries);
for (int i = 0; i < M; i++) {
fout << raspuns[i] << "\n";
}
return 0;
}