QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#101383 | #5251. Constellations | DestroyXuanQuang# | AC ✓ | 8740ms | 128696kb | C++17 | 2.4kb | 2023-04-29 12:34:49 | 2023-04-29 12:34:53 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Frac {
ll p, q;
bool inline operator < (const Frac &rhs) const {
return p * rhs.q < q * rhs.p;
}
};
struct Pair {
Frac dist; int i, j;
Pair(Frac dist, int _i, int _j): dist(dist), i(_i), j(_j) {
if (i > j) swap(i, j);
}
bool inline operator < (const Pair &rhs) const {
return make_tuple(dist, i, j) < make_tuple(rhs.dist, rhs.i, rhs.j);
}
};
struct Group {
ll x2, x, y2, y;
int id, sz;
};
Group merge(Group &a, Group &b, int id) {
return {
a.x2 + b.x2,
a.x + b.x,
a.y2 + b.y2,
a.y + b.y,
id,
a.sz + b.sz,
};
}
Frac getDist(Group &a, Group &b) {
ll dx = b.sz * a.x2 + a.sz * b.x2 - 2 * a.x * b.x;
ll dy = b.sz * a.y2 + a.sz * b.y2 - 2 * a.y * b.y;
return {dx + dy, a.sz * b.sz};
}
int main() {
int n;
vector<Group> group;
cin >> n;
for(int i = 0; i < n; ++i) {
int x, y;
cin >> x >> y;
group.push_back({x*x, x, y*y, y, i, 1});
}
auto getPair = [&](int i, int j) {
Frac dist = getDist(group[i], group[j]);
return Pair(dist, i, j);
};
set<Pair> s;
for(int i = 0; i < n; ++i) {
for(int j = i+1; j < n; ++j) {
s.insert(getPair(i, j));
}
}
vector<bool> active(n, true);
while (!s.empty()) {
// for(auto [dist, i, j]: s) printf("dist, i, j: (%lld, %lld) %d %d\n", dist.p, dist.q, i, j);
int p0 = s.begin()->i, p1 = s.begin()->j; s.erase(s.begin());
int n = group.size();
active[p0] = false;
active[p1] = false;
for(int i = 0; i < n; ++i) {
if (active[i]) {
Pair c1 = getPair(i, p0);
Pair c2 = getPair(i, p1);
// printf("dist, i, p0: %lld %lld %d %d\n", c1.dist.p, c1.dist.q, c1.i, c1.j);
// printf("dist, i, p1: %lld %lld %d %d\n", c2.dist.p, c2.dist.q, c2.i, c2.j);
s.erase(c1);
s.erase(c2);
}
}
group.push_back(merge(group[p0], group[p1], n));
printf("%d\n", group[n].sz);
active.push_back(true);
for(int i = 0; i < n; ++i) {
if (active[i]) {
s.insert(getPair(i, n));
}
}
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3616kb
input:
2 0 0 1 0
output:
2
result:
ok single line: '2'
Test #2:
score: 0
Accepted
time: 3311ms
memory: 128644kb
input:
2000 1000 -1000 1000 -999 1000 -998 1000 -997 1000 -996 1000 -995 1000 -994 1000 -993 1000 -992 1000 -991 1000 -990 1000 -989 1000 -988 1000 -987 1000 -986 1000 -985 1000 -984 1000 -983 1000 -982 1000 -981 1000 -980 1000 -979 1000 -978 1000 -977 1000 -976 1000 -975 1000 -974 1000 -973 1000 -972 1000...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #3:
score: 0
Accepted
time: 3310ms
memory: 128552kb
input:
2000 -1000 1000 -999 1000 -998 1000 -997 1000 -996 1000 -995 1000 -994 1000 -993 1000 -992 1000 -991 1000 -990 1000 -989 1000 -988 1000 -987 1000 -986 1000 -985 1000 -984 1000 -983 1000 -982 1000 -981 1000 -980 1000 -979 1000 -978 1000 -977 1000 -976 1000 -975 1000 -974 1000 -973 1000 -972 1000 -971...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #4:
score: 0
Accepted
time: 3329ms
memory: 128592kb
input:
2000 -1000 -1000 -999 -1000 -998 -1000 -997 -1000 -996 -1000 -995 -1000 -994 -1000 -993 -1000 -992 -1000 -991 -1000 -990 -1000 -989 -1000 -988 -1000 -987 -1000 -986 -1000 -985 -1000 -984 -1000 -983 -1000 -982 -1000 -981 -1000 -980 -1000 -979 -1000 -978 -1000 -977 -1000 -976 -1000 -975 -1000 -974 -10...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #5:
score: 0
Accepted
time: 3285ms
memory: 128548kb
input:
2000 -1000 -1000 -1000 -999 -1000 -998 -1000 -997 -1000 -996 -1000 -995 -1000 -994 -1000 -993 -1000 -992 -1000 -991 -1000 -990 -1000 -989 -1000 -988 -1000 -987 -1000 -986 -1000 -985 -1000 -984 -1000 -983 -1000 -982 -1000 -981 -1000 -980 -1000 -979 -1000 -978 -1000 -977 -1000 -976 -1000 -975 -1000 -9...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #6:
score: 0
Accepted
time: 4989ms
memory: 128564kb
input:
2000 1000 -250 1000 -249 1000 -248 1000 -247 1000 -246 1000 -245 1000 -244 1000 -243 1000 -242 1000 -241 1000 -240 1000 -239 1000 -238 1000 -237 1000 -236 1000 -235 1000 -234 1000 -233 1000 -232 1000 -231 1000 -230 1000 -229 1000 -228 1000 -227 1000 -226 1000 -225 1000 -224 1000 -223 1000 -222 1000 ...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #7:
score: 0
Accepted
time: 3353ms
memory: 128520kb
input:
2000 0 -1000 0 -999 0 -998 0 -997 0 -996 0 -995 0 -994 0 -993 0 -992 0 -991 0 -990 0 -989 0 -988 0 -987 0 -986 0 -985 0 -984 0 -983 0 -982 0 -981 0 -980 0 -979 0 -978 0 -977 0 -976 0 -975 0 -974 0 -973 0 -972 0 -971 0 -970 0 -969 0 -968 0 -967 0 -966 0 -965 0 -964 0 -963 0 -962 0 -961 0 -960 0 -959 ...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #8:
score: 0
Accepted
time: 8061ms
memory: 128644kb
input:
2000 -400 571 -725 636 -880 529 -657 372 -383 382 -746 888 -604 785 -497 557 -677 977 -562 917 -530 623 -636 535 -816 579 -633 428 -573 561 -496 479 -409 448 -570 379 -421 795 -827 865 -730 809 -423 984 -676 772 -398 816 -451 373 -756 777 -351 829 -954 345 -543 871 -595 521 -501 734 -378 769 -987 60...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 ...
result:
ok 1999 lines
Test #9:
score: 0
Accepted
time: 8243ms
memory: 128624kb
input:
2000 -946 966 -655 760 -539 413 -857 715 -668 993 -543 399 -724 415 -584 464 -364 541 -518 756 -966 790 -648 616 -654 419 -842 544 -714 482 -636 984 -904 343 -559 925 -440 494 -636 780 -695 494 -585 465 -487 396 -683 886 -949 959 -668 518 -780 583 -854 612 -786 601 -527 758 -444 563 -994 840 -575 49...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 ...
result:
ok 1999 lines
Test #10:
score: 0
Accepted
time: 8293ms
memory: 128556kb
input:
2000 -707 382 -500 486 -927 357 -972 984 -738 591 -535 766 -610 603 -582 908 -923 676 -689 828 -940 783 -502 728 -971 384 -873 909 -824 412 -532 805 -715 448 -972 748 -423 975 -355 915 -943 453 -740 998 -776 457 -395 764 -805 337 -650 520 -656 612 -1000 841 -758 423 -414 762 -443 674 -666 469 -814 6...
output:
2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #11:
score: 0
Accepted
time: 8186ms
memory: 128696kb
input:
2000 0 0 0 -1 1 -1 -1 1 -1 2 1 -2 3 0 1 -4 3 -3 -2 -4 -1 5 5 3 3 -6 4 6 -6 -5 4 -7 -2 9 1 -9 7 7 4 10 7 9 5 10 6 11 -5 12 -13 4 -5 13 14 2 10 11 -6 14 16 -1 11 -12 -14 -9 -14 11 15 11 -16 9 6 18 0 20 13 -15 9 -19 -10 -19 -21 8 -4 -22 -23 0 16 17 12 -21 -22 12 4 25 -14 -21 -7 -25 -3 -27 -27 1 23 16 1...
output:
2 2 2 2 2 2 2 2 2 2 2 2 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 5 2 2 2 2 2 2 2 2 2 2 2 2 2 7 5 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 9 3 2 2 2 2 2 2 3 3 3 6 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 8 2 2 2 2 2 2 2 2 2 3 3 4 4 2 2 2 2 11 3 3 2 2 2 2 2 2 4 2 2 2 2 2 2 2 2 2...
result:
ok 1999 lines
Test #12:
score: 0
Accepted
time: 8269ms
memory: 128548kb
input:
2000 0 0 -1 0 1 -1 0 -2 -1 -2 1 3 -3 1 3 2 -4 -1 -2 -4 4 4 -5 -3 -6 3 3 6 6 5 -7 4 -9 -2 8 5 3 -9 3 -10 11 0 8 -9 -6 -11 11 -7 6 12 -7 -12 0 -14 14 -5 -15 -1 -4 -15 -2 -16 -13 11 -15 -9 8 16 -18 -6 18 5 -16 12 -9 18 -1 -21 -15 -15 4 -22 -22 4 7 -22 19 -14 16 -18 15 19 -5 25 2 26 -1 26 -7 -26 23 -16 ...
output:
2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 5 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 4 3 3 2 2 2 2 2 2 7 2 2 2 2 2 2 2 2 2 2 2 2 2 9 2 2 2 2 2 2 2 2 2 6 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 5 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 4 2 2 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #13:
score: 0
Accepted
time: 8610ms
memory: 128556kb
input:
2000 44 -748 385 448 -556 196 -569 -152 25 178 -865 609 644 -339 780 -558 429 676 469 712 876 987 -21 705 -742 679 375 970 -884 186 158 -340 -665 -673 153 484 -662 155 879 -724 -490 -785 -273 641 318 557 377 -706 260 695 -657 -926 -561 -315 861 -328 836 253 432 -505 -229 832 -774 -194 866 -951 171 6...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #14:
score: 0
Accepted
time: 8740ms
memory: 128636kb
input:
2000 594 213 978 59 312 909 -226 -78 361 -398 -349 80 -9 -489 862 -525 -104 442 817 901 -243 921 -398 -185 279 -86 29 971 161 187 103 920 -825 -631 997 -179 -883 -78 442 322 463 -867 174 836 -92 308 179 -281 -960 578 513 -27 -436 -585 435 -621 -630 898 816 -515 693 205 -855 -124 27 -819 5 325 -510 -...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #15:
score: 0
Accepted
time: 8608ms
memory: 128648kb
input:
2000 30 -912 687 32 -171 -142 320 -399 -304 640 -449 -761 -616 -493 -948 -63 -597 689 821 -935 -24 959 -568 78 -311 -446 929 733 -41 497 -345 909 131 -65 626 143 93 317 240 -796 165 193 -435 -211 -413 -830 845 -457 261 -508 -561 732 -194 934 -615 761 762 -370 614 -348 -663 720 -857 -457 695 -769 668...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 1999 lines
Test #16:
score: 0
Accepted
time: 2ms
memory: 3688kb
input:
4 0 0 0 -1 0 1 0 2
output:
2 2 4
result:
ok 3 lines