155822025-02-20 17:40:32BucsMateÁdám és Éva együttcpp17Wrong answer 24/5086ms19820 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>

using namespace std;
//ifstream fin("input.in");

const int ADAM = 1;
const int EVA = 2;

struct Event
{
    int idopont;
    int szemely;
    bool jon = false;
};

bool hasonlit(Event a, Event b)
{
    if(a.idopont == b.idopont){
        if(a.jon){
            return false;
        }
    }
    return(a.idopont < b.idopont);
}


int main()
{
    int P, A, E;
    cin >> P;
    cin >> A;
    Event adam_jon[100001], adam_megy[100001];
    for(int i = 0; i < A; i++){
        int a, b;
        cin >> a >> b;
        adam_jon[i] = {a, ADAM, true};
        adam_megy[i] = {b, ADAM, false};
    }

    cin >> E;
    Event eva_jon[100001], eva_megy[100001];
    for(int i = 0; i < E; i++){
        int a, b;
        cin >> a >> b;
        eva_jon[i] = {a, EVA, true};
        eva_megy[i] = {b, EVA, false};
    }

    Event osszes[400001], temp1[400001], temp2[400001];

    merge(adam_jon, adam_jon+A, adam_megy, adam_megy+A, temp1, hasonlit);
    merge(eva_jon, eva_jon+E, eva_megy, eva_megy+E, temp2, hasonlit);
    merge(temp1, temp1+2*A, temp2, temp2+2*E, osszes, hasonlit);

    int utolso_idopont = 0;
    vector<pair<int, int>> megoldas;
    bool adam_elerheto = false, eva_elerheto = false;
    for(int i = 0; i < 2*A+2*E; i++){
        if(osszes[i].szemely == ADAM){
            if(osszes[i].jon){
                adam_elerheto = true;
            }
            else{
                adam_elerheto = false;
                if(eva_elerheto){
                    megoldas.push_back({utolso_idopont, osszes[i].idopont});
                }
            }
        }
        else{
            if(osszes[i].jon){
                eva_elerheto = true;
            }
            else{
                eva_elerheto = false;
                if(adam_elerheto){
                    megoldas.push_back({utolso_idopont, osszes[i].idopont});
                }
            }
        }
        if(adam_elerheto && eva_elerheto){
            utolso_idopont = osszes[i].idopont;
        }
    }

    cout << megoldas.size() << endl;
    for(int i = 0; i < megoldas.size(); i++){
        cout << megoldas[i].first << " " << megoldas[i].second << endl;
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base24/50
1Accepted0/014ms18996 KiB
2Accepted0/017ms18996 KiB
3Accepted2/214ms18996 KiB
4Accepted2/217ms18980 KiB
5Accepted2/214ms19192 KiB
6Accepted2/217ms19052 KiB
7Accepted2/217ms19004 KiB
8Accepted2/214ms18996 KiB
9Accepted2/214ms19048 KiB
10Wrong answer0/217ms19032 KiB
11Accepted2/214ms19084 KiB
12Accepted2/217ms19104 KiB
13Accepted2/217ms19168 KiB
14Accepted2/214ms19164 KiB
15Accepted2/214ms19108 KiB
16Wrong answer0/282ms19816 KiB
17Wrong answer0/383ms19632 KiB
18Wrong answer0/376ms19572 KiB
19Wrong answer0/482ms19820 KiB
20Wrong answer0/486ms19632 KiB
21Wrong answer0/485ms19772 KiB
22Wrong answer0/485ms19632 KiB