4602 2023. 03. 30 11:11:04 AGergo Ádám és Éva együtt cpp17 Elfogadva 50/50 41ms 5580 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int utolso,adamszam,evaszam;
    cin >> utolso >> adamszam;

    vector<int> ansStart;
    vector<int> ansEnd;

    int ans = 0;

    vector<int> aStart(adamszam+1,-1);
    vector<int> aEnd(adamszam+1,-1);

    for(int i = 0; i < adamszam; i++)
    {
        cin >> aStart[i] >> aEnd[i];
    }

    cin >> evaszam;

    vector<int> eStart(evaszam+1,-1);
    vector<int> eEnd(evaszam+1,-1);

    for(int i = 0; i < evaszam; i++)
    {
        cin >> eStart[i] >> eEnd[i];
    }

    int x = 0,y = 0; //x -eva index; y - adam index

    while(y < adamszam && x < evaszam)
    {


        //cout << "adam: " << y << " eva: " << x << "\n";
        if(eStart[x] > aStart[y] && eStart[x] < aEnd[y])
        {
            ans++;
            if(eEnd[x] > aEnd[y])
            {
                ansStart.push_back(eStart[x]);
                ansEnd.push_back(aEnd[y]);
                y++;
            }
            else
            {
                ansStart.push_back(eStart[x]);
                ansEnd.push_back(eEnd[x]);
                x++;
            }
        }
        else if(aStart[y] > eStart[x] && aStart[y] < eEnd[x])
        {
            ans++;
            if(aEnd[y] > eEnd[x])
            {
                ansStart.push_back(aStart[y]);
                ansEnd.push_back(eEnd[x]);
                x++;
            }
            else
            {
                ansStart.push_back(aStart[y]);
                ansEnd.push_back(aEnd[y]);
                y++;
            }
        }
        else if(aStart[y] == eStart[x])
        {
            ans++;
            if(aEnd[y] > eEnd[x])
            {
                ansStart.push_back(aStart[y]);
                ansEnd.push_back(eEnd[x]);
                x++;
            }
            else
            {
                ansStart.push_back(aStart[y]);
                ansEnd.push_back(aEnd[y]);
                y++;
            }
        }

        if(aStart[y] == eStart[x])
        {
            if(aEnd[y] < eEnd[x])
            {
                y++;
            }
            else
            {
                x++;
            }
        }

 while(aEnd[y] <= eStart[x])
        {
            y++;
        }

        while(eEnd[x] <= aStart[y])
        {
            x++;
        }


    }

    cout << ans << "\n";
    for(int i = 0; i < ans; i++)
    {
        cout << ansStart[i] << " " << ansEnd[i] << "\n";
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1808 KiB
2 Elfogadva 0/0 3ms 2060 KiB
3 Elfogadva 2/2 3ms 2272 KiB
4 Elfogadva 2/2 3ms 2428 KiB
5 Elfogadva 2/2 3ms 2636 KiB
6 Elfogadva 2/2 3ms 2848 KiB
7 Elfogadva 2/2 2ms 3060 KiB
8 Elfogadva 2/2 2ms 3316 KiB
9 Elfogadva 2/2 3ms 3520 KiB
10 Elfogadva 2/2 3ms 3700 KiB
11 Elfogadva 2/2 3ms 3784 KiB
12 Elfogadva 2/2 3ms 3812 KiB
13 Elfogadva 2/2 3ms 4036 KiB
14 Elfogadva 2/2 3ms 4244 KiB
15 Elfogadva 2/2 3ms 4280 KiB
16 Elfogadva 2/2 39ms 5288 KiB
17 Elfogadva 3/3 39ms 5416 KiB
18 Elfogadva 3/3 35ms 5508 KiB
19 Elfogadva 4/4 37ms 5304 KiB
20 Elfogadva 4/4 41ms 5580 KiB
21 Elfogadva 4/4 39ms 5348 KiB
22 Elfogadva 4/4 39ms 5348 KiB