Cod sursa(job #2295250)

Utilizator dia.ionescuIonescu Diana dia.ionescu Data 3 decembrie 2018 13:50:24
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb

#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;
}