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 << " ";
}