Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Shangbin

Problemset: วันว่างๆ

Language: cpp

Time: 0.009 second

Submitted On: 2026-03-13 23:24:19

#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;

const int maxSE = 1005;
int n, m, s, e, line[maxSE];
vector<pii> free_day;

int main(){
    cin.tie(nullptr)->sync_with_stdio(0);
    cin >> n;
    int max_e = 0;
    for (int i = 0; i < n; i++){
        cin >> m;
        while (m--){
            cin >> s >> e;
            line[s] += 1;
            line[e] -= 1;
            max_e = max(max_e, e);
        }
    }
    //Sweepline
    int prev_inter = line[1];
    int intersect = prev_inter;
    int start = -1;
    for (int i = 2; i < max_e; i++){
        intersect += line[i];
        if (prev_inter > 0 && intersect == 0){
            start = i;
        }
        else if (prev_inter == 0 && intersect > 0 && start != -1){
            free_day.push_back({start, i});
        }
        prev_inter = intersect;
    }
    if (free_day.size() == 0) return cout << -1, 0;
    for (auto [s, e] : free_day) cout << s << " " << e << " ";
}