提出 #28441485
ソースコード 拡げる
/*
* Author: nskybytskyi
* Time: 2022-01-08 14:00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, k;
cin >> n >> k;
vector<pair<int, int>> xy(n);
for (auto& [x, y] : xy) {
cin >> x >> y;
}
map<pair<int, int>, vector<int>> groups;
for (int i = 0; i < n; ++i) {
auto [x, y] = xy[i];
groups[make_pair(x / k, y / k)].push_back(i);
}
// We'll check all pairs of points in adjacent groups
// One may think that this number is quadratic
// But it turns out that "almost" every such pair works
// I.e. the number of pairs we chek is O(M)
set<pair<int, int>> close;
auto adjacent_groups = [&] (pair<int, int> group) -> vector<pair<int, int>> {
auto [x, y] = group;
vector<pair<int, int>> groups;
for (int x_difference = -1; x_difference <= 1; ++x_difference) {
for (int y_difference = -1; y_difference <= 1; ++y_difference) {
groups.emplace_back(x + x_difference, y + y_difference);
}
}
return groups;
};
auto distance_squared = [&] (int i, int j) -> int64_t {
return (xy[i].first - xy[j].first) * 1ll * (xy[i].first - xy[j].first) \
+ (xy[i].second - xy[j].second) * 1ll * (xy[i].second - xy[j].second);
};
for (const auto& [group, points] : groups) {
for (auto adjacent_group : adjacent_groups(group)) {
if (groups.count(adjacent_group)) {
for (auto point : points) {
for (auto adjacent_point : groups[adjacent_group]) {
if (distance_squared(point, adjacent_point) <= k * 1ll * k) {
if (point < adjacent_point) {
close.emplace(point, adjacent_point);
}
}
}
}
}
}
}
cout << close.size() << "\n";
for (auto [i, j] : close) {
cout << i + 1 << " " << j + 1 << "\n";
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | Ex - Enumerate Pairs |
| ユーザ | nika_skybytska |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 600 |
| コード長 | 1954 Byte |
| 結果 | AC |
| 実行時間 | 568 ms |
| メモリ | 39880 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | hack.txt, sample_01.txt, sample_02.txt, sample_03.txt, type01_10.txt, type01_11.txt, type01_12.txt, type01_13.txt, type01_14.txt, type01_15.txt, type01_16.txt, type01_17.txt, type01_18.txt, type02_01.txt, type02_03.txt, type02_06.txt, type02_08.txt, type02_09.txt, type02_11.txt, type02_14.txt, type02_16.txt, type03_01.txt, type03_02.txt, type03_03.txt, type03_04.txt, type04_01.txt, type04_02.txt, type04_03.txt, type04_04.txt, type05_13.txt, type05_14.txt, type05_15.txt, type05_16.txt, type05_17.txt, type05_18.txt, type05_19.txt, type05_20.txt, type05_21.txt, type05_22.txt, type05_23.txt, type05_24.txt, type06_01.txt, type06_02.txt, type06_03.txt, type06_04.txt, type06_05.txt, type06_06.txt, type06_07.txt, type06_08.txt, type06_09.txt, type06_10.txt, type07_01.txt, type07_02.txt, type07_03.txt, type07_04.txt, type08_02.txt, type08_03.txt, type08_06.txt, type08_07.txt, type08_10.txt, type08_11.txt, type08_14.txt, type08_15.txt, type08_18.txt, type08_19.txt, type08_22.txt, type08_23.txt, type09_06.txt, type09_07.txt, type10_01.txt, type10_02.txt, type10_03.txt, type10_04.txt, type10_05.txt, type10_06.txt, type10_07.txt, type10_08.txt, type10_09.txt, type10_10.txt, type10_11.txt, type10_12.txt, type11_01.txt, type11_02.txt, type11_03.txt, type11_04.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| hack.txt | AC | 410 ms | 35832 KiB |
| sample_01.txt | AC | 8 ms | 3552 KiB |
| sample_02.txt | AC | 2 ms | 3628 KiB |
| sample_03.txt | AC | 2 ms | 3568 KiB |
| type01_10.txt | AC | 136 ms | 22884 KiB |
| type01_11.txt | AC | 328 ms | 28056 KiB |
| type01_12.txt | AC | 341 ms | 24704 KiB |
| type01_13.txt | AC | 568 ms | 38260 KiB |
| type01_14.txt | AC | 523 ms | 38392 KiB |
| type01_15.txt | AC | 444 ms | 32624 KiB |
| type01_16.txt | AC | 517 ms | 38256 KiB |
| type01_17.txt | AC | 536 ms | 38384 KiB |
| type01_18.txt | AC | 467 ms | 32620 KiB |
| type02_01.txt | AC | 31 ms | 6988 KiB |
| type02_03.txt | AC | 157 ms | 20840 KiB |
| type02_06.txt | AC | 132 ms | 21288 KiB |
| type02_08.txt | AC | 187 ms | 19516 KiB |
| type02_09.txt | AC | 25 ms | 5660 KiB |
| type02_11.txt | AC | 166 ms | 22688 KiB |
| type02_14.txt | AC | 43 ms | 8480 KiB |
| type02_16.txt | AC | 187 ms | 19548 KiB |
| type03_01.txt | AC | 285 ms | 24148 KiB |
| type03_02.txt | AC | 309 ms | 27676 KiB |
| type03_03.txt | AC | 306 ms | 27288 KiB |
| type03_04.txt | AC | 307 ms | 27360 KiB |
| type04_01.txt | AC | 285 ms | 26632 KiB |
| type04_02.txt | AC | 295 ms | 26672 KiB |
| type04_03.txt | AC | 292 ms | 26672 KiB |
| type04_04.txt | AC | 301 ms | 26532 KiB |
| type05_13.txt | AC | 23 ms | 5816 KiB |
| type05_14.txt | AC | 17 ms | 5044 KiB |
| type05_15.txt | AC | 10 ms | 3560 KiB |
| type05_16.txt | AC | 30 ms | 6188 KiB |
| type05_17.txt | AC | 6 ms | 3608 KiB |
| type05_18.txt | AC | 132 ms | 19516 KiB |
| type05_19.txt | AC | 63 ms | 10784 KiB |
| type05_20.txt | AC | 141 ms | 20532 KiB |
| type05_21.txt | AC | 7 ms | 3564 KiB |
| type05_22.txt | AC | 22 ms | 5392 KiB |
| type05_23.txt | AC | 18 ms | 5008 KiB |
| type05_24.txt | AC | 86 ms | 13780 KiB |
| type06_01.txt | AC | 9 ms | 3568 KiB |
| type06_02.txt | AC | 2 ms | 3496 KiB |
| type06_03.txt | AC | 4 ms | 3492 KiB |
| type06_04.txt | AC | 2 ms | 3628 KiB |
| type06_05.txt | AC | 2 ms | 3540 KiB |
| type06_06.txt | AC | 2 ms | 3616 KiB |
| type06_07.txt | AC | 2 ms | 3468 KiB |
| type06_08.txt | AC | 2 ms | 3564 KiB |
| type06_09.txt | AC | 2 ms | 3612 KiB |
| type06_10.txt | AC | 2 ms | 3472 KiB |
| type07_01.txt | AC | 2 ms | 3540 KiB |
| type07_02.txt | AC | 2 ms | 3504 KiB |
| type07_03.txt | AC | 2 ms | 3544 KiB |
| type07_04.txt | AC | 2 ms | 3596 KiB |
| type08_02.txt | AC | 407 ms | 35440 KiB |
| type08_03.txt | AC | 412 ms | 35572 KiB |
| type08_06.txt | AC | 420 ms | 35568 KiB |
| type08_07.txt | AC | 420 ms | 35436 KiB |
| type08_10.txt | AC | 417 ms | 35448 KiB |
| type08_11.txt | AC | 415 ms | 35568 KiB |
| type08_14.txt | AC | 417 ms | 35504 KiB |
| type08_15.txt | AC | 409 ms | 35568 KiB |
| type08_18.txt | AC | 428 ms | 35440 KiB |
| type08_19.txt | AC | 412 ms | 35448 KiB |
| type08_22.txt | AC | 417 ms | 35560 KiB |
| type08_23.txt | AC | 439 ms | 35440 KiB |
| type09_06.txt | AC | 4 ms | 3600 KiB |
| type09_07.txt | AC | 2 ms | 3628 KiB |
| type10_01.txt | AC | 471 ms | 39792 KiB |
| type10_02.txt | AC | 474 ms | 39880 KiB |
| type10_03.txt | AC | 469 ms | 39800 KiB |
| type10_04.txt | AC | 424 ms | 39776 KiB |
| type10_05.txt | AC | 420 ms | 39792 KiB |
| type10_06.txt | AC | 425 ms | 39792 KiB |
| type10_07.txt | AC | 432 ms | 39796 KiB |
| type10_08.txt | AC | 420 ms | 39792 KiB |
| type10_09.txt | AC | 415 ms | 39792 KiB |
| type10_10.txt | AC | 430 ms | 39812 KiB |
| type10_11.txt | AC | 431 ms | 39796 KiB |
| type10_12.txt | AC | 421 ms | 39792 KiB |
| type11_01.txt | AC | 254 ms | 24984 KiB |
| type11_02.txt | AC | 219 ms | 24944 KiB |
| type11_03.txt | AC | 224 ms | 24972 KiB |
| type11_04.txt | AC | 263 ms | 25096 KiB |