Cod sursa(job #2194268)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 12 aprilie 2018 18:28:47
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream f("viitor.in");
ofstream g("viitor.out");

vector<pair<int, int>> a, sol;
int N, M, K, xi, yi;
int main()
{
    f >> N >> M >> K;
    for(int i = 1; i <= M; i++)
        f >> xi >> yi, a.push_back({xi, yi});
    sort(a.begin(), a.end());
    if(a[0].first > 1)
        sol.push_back({1, a[0].first - 1});
    xi = a[0].first, yi = a[0].second;
    for(auto i = a.begin() + 1; i != a.end(); i++) {
        if((*i).first <= yi && (*i).second > yi) yi = (*i).second;
        else if((*i).first > yi) sol.push_back({xi, yi}), xi = (*i).first, yi = (*i).second;
    }
    sol.push_back({xi, yi});
    for(auto i = sol.begin(); i != sol.end() - 1; i++) {
        if(!(a[0].first == 1 && i != sol.begin())) {
            (*i).first = (*i).second + 1;
            (*i).second = (*(i + 1)).first - 1;
        }
    }
    if(sol[sol.size() - 1].first < N && sol[sol.size() - 1].second < N) {
        sol[sol.size() - 1].first = min(N, sol[sol.size() - 1].second + 1);
        sol[sol.size() - 1].second = N;
    } else sol.pop_back();

    for(int i = 1; i <= K; i++) {

    }
    return 0;
}