Task: | Järjestys |
Sender: | ollpu |
Submission time: | 2025-09-06 10:15:52 +0300 |
Language: | C++ (C++20) |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 10 |
#2 | ACCEPTED | 10 |
#3 | ACCEPTED | 10 |
#4 | ACCEPTED | 40 |
#5 | ACCEPTED | 30 |
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.01 s | 2, 4, 5 | details |
#10 | ACCEPTED | 0.01 s | 3, 4, 5 | details |
#11 | ACCEPTED | 0.01 s | 4, 5 | details |
#12 | ACCEPTED | 0.01 s | 4, 5 | details |
#13 | ACCEPTED | 0.01 s | 4, 5 | details |
#14 | ACCEPTED | 0.01 s | 4, 5 | details |
#15 | ACCEPTED | 0.03 s | 2, 5 | details |
#16 | ACCEPTED | 0.03 s | 3, 5 | details |
#17 | ACCEPTED | 0.02 s | 5 | details |
#18 | ACCEPTED | 0.02 s | 5 | details |
#19 | ACCEPTED | 0.02 s | 5 | details |
#20 | ACCEPTED | 0.03 s | 5 | details |
#21 | ACCEPTED | 0.03 s | 5 | details |
#22 | ACCEPTED | 0.03 s | 5 | details |
Code
#include <bits/stdc++.h> using namespace std; int uf_p[501], uf_s[501]; void uf_clear(int n) { for (int i = 0; i < n; ++i) uf_p[i] = i, uf_s[i] = 1; } int uf_get(int x) { while (uf_p[x] != x) x = uf_p[x]; return x; } bool uf_join(int a, int b) { a = uf_get(a); b = uf_get(b); if (a == b) return false; if (uf_s[a] < uf_s[b]) swap(a, b); uf_p[b] = a; uf_s[a] += uf_s[b]; return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); int T; cin >> T; for (int Ti = 0; Ti < T; ++Ti) { int n; cin >> n; int N = n+1; int x[N], y[N]; int ox[N], oy[N]; for (int i = 0; i < n; ++i) { cin >> x[i] >> y[i]; ox[i] = i; oy[i] = i; } x[n] = 2e9; y[n] = 0; ox[n] = n; oy[n] = n; sort(ox, ox+N, [&](int a, int b) {return x[a] < x[b];}); sort(oy, oy+N, [&](int a, int b) {return y[a] < y[b];}); bool f = 1; for (int i = 0; i < N; ++i) { if (y[oy[i]] > x[ox[i]]) f = 0; } if (!f) { cout << "NO\n"; continue; } int ioy[N]; for (int i = 0; i < N; ++i) ioy[oy[i]] = i; int nxt[N]; for (int i = 0; i < N; ++i) nxt[i] = ioy[ox[i]]; uf_clear(N); for (int i = 0; i < N; ++i) uf_join(i, nxt[i]); int p[N]; for (int i = 0; i < N; ++i) p[i] = i; for (int i = 0; i+1 < N; ++i) { if (y[oy[p[i+1]]] <= x[ox[i]] && uf_join(p[i], p[i+1])) swap(p[i], p[i+1]); } int ip[N]; for (int i = 0; i < N; ++i) ip[p[i]] = i; vector<int> res; int r = 0; do { r = nxt[ip[r]]; res.push_back(oy[r]); } while (r); if ((int)res.size() != N) { cout << "NO\n"; continue; } cout << "YES\n"; res.pop_back(); for (int i : res) { cout << x[i] << " " << y[i] << "\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 100 24 91 45 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 82 80 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 28 25 51 7 47 1 17 11 ... 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 2 2 2 1 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 80804061 58329306 400940916 299338123 712093668 563049590 879335363 246462890 ... 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 1 2 2 1 2 1 1 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 1 9 10 6 9 8 10 2 ... 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 14 71 95 20 55 72 95 99 ... 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 230963650 901110328 981319405 71107827 420481158 965069109 996611366 960883577 ... 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 91053246 37319028 249937680 181597860 517368854 53432557 302873766 288573445 ... 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 1 1 2 2 2 1 2 2 ... 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 1 5 8 2 5 8 10 8 ... 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 15 41 76 72 92 98 100 7 ... Truncated |
Test 20
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 861154169 119512584 569086662 606567153 288230434 322196278 ... |
correct output |
---|
YES 999945324 969534372 999738857 240617694 999244114 722161553 999207839 557351400 ... |
user output |
---|
YES 47896585 707808748 912475145 889549456 972112710 225690351 599410797 288891347 ... Truncated |
Test 21
Group: 5
Verdict: ACCEPTED
input |
---|
100 500 116439250 401518028 280329609 193466222 674040956 209050570 ... |
correct output |
---|
NO YES 773701149 773852119 987509190 315670966 977413249 510418200 ... |
user output |
---|
NO YES 8245253 816690 10793688 551342050 811014411 987525150 ... 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 24314565 937625373 988195925 444535743 778264812 550159619 833431060 847062522 ... Truncated |