Task: | Järjestys |
Sender: | jhuun |
Submission time: | 2025-09-07 22:15:07 +0300 |
Language: | C++ (C++20) |
Status: | READY |
Result: | 70 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 10 |
#2 | ACCEPTED | 10 |
#3 | ACCEPTED | 10 |
#4 | ACCEPTED | 40 |
#5 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#2 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#3 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#4 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#5 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#6 | ACCEPTED | 0.00 s | 1, 2, 4, 5 | details |
#7 | ACCEPTED | 0.00 s | 1, 3, 4, 5 | details |
#8 | ACCEPTED | 0.00 s | 1, 4, 5 | details |
#9 | ACCEPTED | 0.03 s | 2, 4, 5 | details |
#10 | ACCEPTED | 0.04 s | 3, 4, 5 | details |
#11 | ACCEPTED | 0.03 s | 4, 5 | details |
#12 | ACCEPTED | 0.04 s | 4, 5 | details |
#13 | ACCEPTED | 0.03 s | 4, 5 | details |
#14 | ACCEPTED | 0.04 s | 4, 5 | details |
#15 | ACCEPTED | 0.28 s | 2, 5 | details |
#16 | ACCEPTED | 0.53 s | 3, 5 | details |
#17 | ACCEPTED | 0.43 s | 5 | details |
#18 | ACCEPTED | 0.39 s | 5 | details |
#19 | ACCEPTED | 0.38 s | 5 | details |
#20 | WRONG ANSWER | 0.42 s | 5 | details |
#21 | WRONG ANSWER | 0.48 s | 5 | details |
#22 | ACCEPTED | 0.52 s | 5 | details |
Code
#include <bits/stdc++.h> struct Pair { int x; int y; int prev; int next; int root; std::vector<int> A; std::vector<int> B; bool operator<(const Pair& other) { return x < other.x; } }; int get_root(const std::vector<Pair>& pairs, int x) { const auto& p = pairs[x]; return p.root == -1 ? x : get_root(pairs, p.root); } bool same_path(const std::vector<Pair>& pairs, int a, int b) { return get_root(pairs, a) == get_root(pairs, b); } void set_roots(std::vector<Pair>& pairs, int a, int b) { const auto ra = get_root(pairs, a); const auto rb = get_root(pairs, b); pairs[rb].root = ra; } bool connect(std::vector<Pair>& pairs, int s, int e) { auto x = pairs[s].x; for (; s < e; ++s) { auto c = -1; for (auto i = 0, val = 0; i < static_cast<int>(pairs.size()); ++i) { if (i == s) continue; const auto& p = pairs[i]; if (p.next >= 0) continue; if (p.y > x) continue; if (same_path(pairs, s, i)) continue; if (p.y > val) { c = i; val = p.y; } } if (c == -1) continue; pairs[s].prev = c; pairs[c].next = s; set_roots(pairs, s, c); } return true; } void dfs(std::vector<Pair>& pairs, std::vector<bool>& visited, int i, int& k) { for (const auto& x : pairs[i].A) { if (visited[x]) continue; visited[x] = true; ++k; dfs(pairs, visited, x, k); } for (const auto& x : pairs[i].B) { if (visited[x]) continue; visited[x] = true; ++k; dfs(pairs, visited, x, k); } } bool check(std::vector<Pair>& pairs) { int nop = 0; for (auto i = 0; i < static_cast<int>(pairs.size()); ) { auto si = i; auto x = pairs[i].x; while (i < static_cast<int>(pairs.size()) && pairs[i].x == x) { ++i; } auto c = 0; for (auto j = 0; j < static_cast<int>(pairs.size()); ++j) { c += pairs[j].y <= x; } if (i > c + 1) { return false; } connect(pairs, si, i); for (auto t = si; t < i; ++t) { nop += pairs[t].prev == -1; } if (nop > 1) { return false; } } return true; } void solve(const std::vector<Pair>& pairs, std::vector<bool>& visited, std::vector<std::size_t>& path, std::size_t idx, std::size_t n, bool &ok) { if (ok) return; if (n == pairs.size()) { std::cout << "YES\n"; for (const auto i : path) { std::cout << pairs[i].x << ' ' << pairs[i].y << '\n'; } ok = true; return; } for (const auto ni : pairs[idx].A) { if (visited[ni]) continue; visited[ni] = true; path[n] = ni; solve(pairs, visited, path, ni, n + 1, ok); visited[ni] = false; } } int find_start_by_prev(const std::vector<Pair>& pairs) { for (auto i = 0; i < static_cast<int>(pairs.size()); ++i) { if (pairs[i].prev < 0) { return i; } } return -1; } int find_start_by_next(const std::vector<Pair>& pairs) { for (auto i = 0; i < static_cast<int>(pairs.size()); ++i) { if (pairs[i].next < 0) { return i; } } return -1; } int main() { int t, n, x, y; std::cin >> t; for (auto i = 0; i < t; ++i) { std::cin >> n; std::vector<Pair> pairs; for (auto j = 0; j < n; ++j) { std::cin >> x >> y; pairs.emplace_back(x, y, -1, -1, -1); } std::sort(pairs.begin(), pairs.end()); for (auto j = 0; j < n; ++j) { for (auto k = 0; k < n; ++k) { if (j == k) continue; if (pairs[j].y <= pairs[k].x) { pairs[j].A.push_back(k); pairs[k].B.push_back(j); } } } if (n <= 10) { std::vector<bool> visited(n); std::vector<std::size_t> path(n); bool ok = false; for (std::size_t idx = 0; idx < pairs.size(); ++idx) { visited[idx] = true; path[0] = idx; solve(pairs, visited, path, idx, 1, ok); visited[idx] = false; if (ok) break; } if (!ok) { std::cout << "NO\n"; } } else { std::vector<bool> visited(n); int dfs_ok = 1; visited[0] = true; dfs(pairs, visited, 0, dfs_ok); const auto ok = dfs_ok == n && check(pairs); if (ok) { std::cout << "YES\n"; if (auto k = find_start_by_prev(pairs); k >= 0) { std::cout << pairs[k].x << ' ' << pairs[k].y << '\n'; for (k = pairs[k].next; k != -1; k = pairs[k].next) { std::cout << pairs[k].x << ' ' << pairs[k].y << '\n'; } } else if (k = find_start_by_next(pairs); k >= 0) { std::vector<int> path{k}; for (k = pairs[k].prev; k != -1; k = pairs[k].prev) { path.push_back(k); } for (auto it = path.rbegin(); it != path.rend(); ++it) { std::cout << pairs[*it].x << ' ' << pairs[*it].y << '\n'; } } else { std::cout << "NO\n"; } } else { std::cout << "NO\n"; } } } }
Test details
Test 1
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 1 74 75 1 100 43 ... |
correct output |
---|
YES 74 75 YES 100 43 YES ... |
user output |
---|
YES 74 75 YES 100 43 YES ... Truncated |
Test 2
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 2 80 54 51 61 2 ... |
correct output |
---|
YES 51 61 80 54 YES 2 64 ... |
user output |
---|
YES 51 61 80 54 YES 2 64 ... Truncated |
Test 3
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 3 3 74 91 45 100 24 ... |
correct output |
---|
YES 3 74 100 24 91 45 YES ... |
user output |
---|
YES 3 74 91 45 100 24 YES ... Truncated |
Test 4
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 4 88 50 62 41 12 86 ... |
correct output |
---|
YES 12 86 88 50 62 41 66 93 ... |
user output |
---|
YES 12 86 88 50 62 41 66 93 ... Truncated |
Test 5
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 5 82 80 80 92 5 22 ... |
correct output |
---|
YES 5 22 94 13 82 80 80 92 ... |
user output |
---|
YES 5 22 80 92 93 91 94 13 ... Truncated |
Test 6
Group: 1, 2, 4, 5
Verdict: ACCEPTED
input |
---|
100 5 34 38 26 30 1 6 ... |
correct output |
---|
YES 1 6 12 22 26 30 34 38 ... |
user output |
---|
YES 1 6 12 22 26 30 34 38 ... Truncated |
Test 7
Group: 1, 3, 4, 5
Verdict: ACCEPTED
input |
---|
100 5 50 40 28 25 51 7 ... |
correct output |
---|
YES 51 7 50 40 47 1 17 11 ... |
user output |
---|
YES 17 11 28 25 47 1 50 40 ... Truncated |
Test 8
Group: 1, 4, 5
Verdict: ACCEPTED
input |
---|
100 5 2 2 2 1 1 1 ... |
correct output |
---|
YES 1 2 2 1 2 1 1 1 ... |
user output |
---|
YES 1 1 1 2 2 2 2 1 ... Truncated |
Test 9
Group: 2, 4, 5
Verdict: ACCEPTED
input |
---|
100 100 175870020 296379324 248160539 883842002 21934885 781732852 ... |
correct output |
---|
NO YES 4976156 6890135 10553287 11923223 14617057 17728163 ... |
user output |
---|
NO YES 4976156 6890135 10553287 11923223 14617057 17728163 ... Truncated |
Test 10
Group: 3, 4, 5
Verdict: ACCEPTED
input |
---|
100 100 447597377 314433951 700232436 691277009 937268439 708165426 ... |
correct output |
---|
YES 998963839 391778929 995772196 257222033 995754704 553123757 994629465 247775824 ... |
user output |
---|
YES 998963839 391778929 400940916 299338123 302529290 230967335 231166897 72684060 ... Truncated |
Test 11
Group: 4, 5
Verdict: ACCEPTED
input |
---|
100 100 1 1 1 2 2 1 ... |
correct output |
---|
YES 1 2 2 1 1 2 2 2 ... |
user output |
---|
YES 2 2 2 2 2 2 2 2 ... Truncated |
Test 12
Group: 4, 5
Verdict: ACCEPTED
input |
---|
100 100 7 1 6 3 10 9 ... |
correct output |
---|
YES 6 7 7 8 9 10 10 10 ... |
user output |
---|
YES 10 3 10 5 9 7 7 10 ... Truncated |
Test 13
Group: 4, 5
Verdict: ACCEPTED
input |
---|
100 100 51 5 85 77 91 84 ... |
correct output |
---|
YES 100 24 100 25 100 3 100 6 ... |
user output |
---|
YES 100 6 99 8 96 44 68 50 ... Truncated |
Test 14
Group: 4, 5
Verdict: ACCEPTED
input |
---|
100 100 823828194 863717310 593641073 340054211 420481158 965069109 ... |
correct output |
---|
YES 999289319 634855378 996775156 433726648 983657502 55234695 981890636 112877413 ... |
user output |
---|
YES 999289319 634855378 763213318 838425591 838513637 193791310 199210760 183781890 ... Truncated |
Test 15
Group: 2, 5
Verdict: ACCEPTED
input |
---|
100 500 88724450 89315226 266915464 267648621 189301651 189661541 ... |
correct output |
---|
YES 764920 1459946 1936195 2832987 3691481 4085931 4991808 5840928 ... |
user output |
---|
YES 764920 1459946 1936195 2832987 3691481 4085931 4991808 5840928 ... Truncated |
Test 16
Group: 3, 5
Verdict: ACCEPTED
input |
---|
100 500 763682761 317584504 756010800 260162861 435911339 78070399 ... |
correct output |
---|
YES 998768285 3307355 998714926 628486754 997115613 820932481 993320616 554600893 ... |
user output |
---|
YES 998768285 3307355 997115613 820932481 826381527 455512763 455619413 152693777 ... Truncated |
Test 17
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 2 2 2 1 1 2 ... |
correct output |
---|
YES 1 2 2 2 2 1 1 2 ... |
user output |
---|
YES 2 2 2 1 2 1 2 1 ... Truncated |
Test 18
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 10 6 10 10 9 10 ... |
correct output |
---|
YES 2 3 3 4 4 5 5 6 ... |
user output |
---|
YES 10 3 10 9 9 3 10 4 ... Truncated |
Test 19
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 85 87 89 70 70 92 ... |
correct output |
---|
YES 96 97 100 67 100 10 100 97 ... |
user output |
---|
YES 100 23 90 19 94 46 46 43 ... Truncated |
Test 20
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 500 861154169 119512584 569086662 606567153 288230434 322196278 ... |
correct output |
---|
YES 999945324 969534372 999738857 240617694 999244114 722161553 999207839 557351400 ... |
user output |
---|
YES 999945324 969534372 969853223 596024679 596208291 803613603 807842509 763396181 ... Truncated |
Test 21
Group: 5
Verdict: WRONG ANSWER
input |
---|
100 500 116439250 401518028 280329609 193466222 674040956 209050570 ... |
correct output |
---|
NO YES 773701149 773852119 987509190 315670966 977413249 510418200 ... |
user output |
---|
NO YES 987509190 315670966 318041275 186720106 187472075 88343635 ... Truncated |
Test 22
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 934181189 942499518 684836806 395802802 957884803 570946201 ... |
correct output |
---|
YES 999772640 505132174 999111650 140844643 999028633 888134186 999020109 291046771 ... |
user output |
---|
YES 999772640 505132174 509093069 668913490 672015345 553786461 663767530 964003402 ... Truncated |