65202023-12-06 09:35:16EsVagyVideójátékcpp17Hibás válasz 10/100180ms9040 KiB
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <climits>
#include <queue>
#include <fstream>
#include <sstream>
#include <math.h>

using namespace std;

int main()
{
    int t;
    int n, m;
    vector<pair<int, int>> breaks;
    vector<pair<int, int>> friendBreaks;

    cin >> t;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int first, second;
        cin >> first >> second;
        breaks.push_back(pair<int, int>(first, second));
    }
    cin >> m;
    for (int i = 0; i < m; i++)
    {
        int first, second;
        cin >> first >> second;
        friendBreaks.push_back(pair<int, int>(first, second));
    }

    int sum = 0;
    int breakIndex = 0;
    int friendBreakIndex = 0;
    while (breakIndex < breaks.size() && friendBreakIndex < friendBreaks.size())
    {
        pair<int, int> match = pair<int, int>(max(breaks[breakIndex].first, friendBreaks[friendBreakIndex].first), min(breaks[breakIndex].second, friendBreaks[friendBreakIndex].second));
        if (match.first > match.second)
        {
            if (breaks[breakIndex].first > friendBreaks[friendBreakIndex].second)
            {
                friendBreakIndex++;
                continue;
            }
            else
            {
                breakIndex++;
                continue;
            }
        }
        if (match.first >= breaks[breakIndex].first + t)
        {
            breakIndex++;
            continue;
        }
        sum += match.second - match.first + 1;
        if (breaks[breakIndex].second < friendBreaks[friendBreakIndex].second)
        {
            breakIndex++;
        }
        else if (breaks[breakIndex].second > friendBreaks[friendBreakIndex].second)
        {
            breaks[breakIndex].first = friendBreaks[friendBreakIndex].second + 1;
            friendBreakIndex++;
        }
        else
        {
            breakIndex++;
            friendBreakIndex++;
        }
    }

    cout << sum;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1688 KiB
2Elfogadva3ms1844 KiB
subtask210/10
3Elfogadva3ms2092 KiB
4Elfogadva3ms2180 KiB
5Elfogadva3ms2312 KiB
6Elfogadva3ms2548 KiB
7Elfogadva3ms2692 KiB
8Elfogadva3ms2944 KiB
9Elfogadva3ms3000 KiB
10Elfogadva3ms3132 KiB
11Elfogadva3ms3216 KiB
subtask30/20
12Elfogadva3ms3220 KiB
13Elfogadva3ms3340 KiB
14Elfogadva3ms3396 KiB
15Elfogadva3ms3544 KiB
16Elfogadva3ms3656 KiB
17Elfogadva4ms3860 KiB
18Elfogadva4ms3972 KiB
19Elfogadva4ms3972 KiB
20Hibás válasz4ms4020 KiB
21Hibás válasz3ms3980 KiB
22Hibás válasz3ms4024 KiB
subtask40/30
23Elfogadva16ms4580 KiB
24Elfogadva50ms5492 KiB
25Elfogadva123ms8556 KiB
26Elfogadva136ms8540 KiB
27Elfogadva136ms8540 KiB
28Elfogadva54ms5956 KiB
29Hibás válasz10ms4400 KiB
30Hibás válasz10ms4468 KiB
31Elfogadva7ms4548 KiB
subtask50/40
32Hibás válasz17ms5172 KiB
33Elfogadva59ms6116 KiB
34Elfogadva112ms7416 KiB
35Elfogadva159ms8984 KiB
36Elfogadva180ms8984 KiB
37Elfogadva180ms9040 KiB
38Hibás válasz93ms7016 KiB
39Hibás válasz112ms8452 KiB
40Elfogadva28ms5488 KiB
41Hibás válasz43ms5672 KiB