6519 2023. 12. 06 09:31:52 EsVagy Videójáték cpp17 Hibás válasz 10/100 181ms 37344 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;
            friendBreakIndex++;
        }
        else
        {
            breakIndex++;
            friendBreakIndex++;
        }
    }

    cout << sum;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1816 KiB
2 Elfogadva 3ms 2060 KiB
subtask2 10/10
3 Elfogadva 3ms 2300 KiB
4 Elfogadva 3ms 2544 KiB
5 Elfogadva 3ms 2708 KiB
6 Elfogadva 3ms 2956 KiB
7 Elfogadva 3ms 3164 KiB
8 Elfogadva 3ms 3360 KiB
9 Elfogadva 3ms 3464 KiB
10 Elfogadva 3ms 3596 KiB
11 Elfogadva 3ms 3524 KiB
subtask3 0/20
12 Elfogadva 3ms 3632 KiB
13 Elfogadva 3ms 3876 KiB
14 Elfogadva 3ms 3940 KiB
15 Elfogadva 3ms 3944 KiB
16 Elfogadva 3ms 4064 KiB
17 Elfogadva 4ms 4232 KiB
18 Elfogadva 4ms 4344 KiB
19 Elfogadva 4ms 4328 KiB
20 Hibás válasz 4ms 4380 KiB
21 Hibás válasz 4ms 4416 KiB
22 Hibás válasz 3ms 4440 KiB
subtask4 0/30
23 Elfogadva 14ms 5148 KiB
24 Elfogadva 50ms 7036 KiB
25 Elfogadva 126ms 12116 KiB
26 Elfogadva 143ms 14704 KiB
27 Elfogadva 137ms 17244 KiB
28 Elfogadva 54ms 15696 KiB
29 Hibás válasz 12ms 14460 KiB
30 Hibás válasz 10ms 14576 KiB
31 Elfogadva 7ms 14616 KiB
subtask5 0/40
32 Hibás válasz 17ms 15140 KiB
33 Elfogadva 61ms 17328 KiB
34 Elfogadva 112ms 21108 KiB
35 Elfogadva 159ms 26004 KiB
36 Elfogadva 180ms 29824 KiB
37 Elfogadva 181ms 33364 KiB
38 Hibás válasz 94ms 33380 KiB
39 Hibás válasz 114ms 37344 KiB
40 Elfogadva 29ms 34844 KiB
41 Hibás válasz 45ms 35756 KiB