QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#489854 | #9161. Naval battle | nhuang685# | 6 | 0ms | 3820kb | C++20 | 1.8kb | 2024-07-25 04:46:10 | 2024-07-25 04:46:10 |
answer
#include <bits/stdc++.h>
constexpr int64_t INF = 0x3f3f3f3f3f3f3f3f;
struct Ship {
int64_t x = 0, y = 0;
int64_t dx = 0, dy = 0;
};
struct Event {
int64_t t;
int i, j;
};
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::vector<Ship> sh(n);
for (auto &[x, y, dx, dy] : sh) {
char dir;
std::cin >> x >> y >> dir;
if (dir == 'N') {
dy = -1;
} else if (dir == 'S') {
dy = 1;
} else if (dir == 'E') {
dx = 1;
} else {
dx = -1;
}
}
auto inter = [&](int64_t x1, int64_t dx1, int64_t x2, int64_t dx2) -> int64_t {
if (x1 == x2) {
return -1;
}
if (dx1 == dx2) {
return INF;
}
int64_t val = (x2 - x1) / (dx1 - dx2);
return val < 0 ? INF : val;
};
std::vector<Event> ev;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
int64_t ix = inter(sh[i].x, sh[i].dx, sh[j].x, sh[j].dx);
int64_t iy = inter(sh[i].y, sh[i].dy, sh[j].y, sh[j].dy);
if ((ix == iy || ix == -1 || iy == -1) && ix != INF && iy != INF) {
ev.emplace_back(std::max(ix, iy), i, j);
}
}
}
std::ranges::sort(ev, {}, &Event::t);
std::vector<bool> in(n, true);
std::vector<int64_t> ti(n, -1);
for (auto [t, i, j] : ev) {
if (in[i] && in[j]) {
in[i] = false;
in[j] = false;
ti[i] = t;
ti[j] = t;
continue;
}
if (!in[i] && !in[j]) {
continue;
}
if (!in[i]) {
std::swap(i, j);
}
assert(!in[j]);
if (t == ti[j]) {
in[i] = false;
ti[i] = t;
}
}
for (int i = 0; i < n; ++i) {
if (in[i]) {
std::cout << i + 1 << '\n';
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 6
Accepted
Test #1:
score: 6
Accepted
time: 0ms
memory: 3548kb
input:
2 675333810 792019962 W 851860476 960355168 W
output:
1 2
result:
ok
Test #2:
score: 6
Accepted
time: 0ms
memory: 3524kb
input:
2 714148610 688520844 W 359519570 789553998 S
output:
1 2
result:
ok
Test #3:
score: 6
Accepted
time: 0ms
memory: 3580kb
input:
2 743286406 87591094 E 108453484 326740470 S
output:
1 2
result:
ok
Test #4:
score: 6
Accepted
time: 0ms
memory: 3788kb
input:
2 629499666 659260200 W 391550936 897208930 N
output:
result:
ok
Test #5:
score: 6
Accepted
time: 0ms
memory: 3612kb
input:
2 509095668 374922996 W 325521434 191348762 S
output:
result:
ok
Test #6:
score: 6
Accepted
time: 0ms
memory: 3596kb
input:
2 357656592 713571312 E 456601638 614626266 S
output:
result:
ok
Test #7:
score: 6
Accepted
time: 0ms
memory: 3820kb
input:
2 353512742 374956722 W 265604916 462864548 N
output:
result:
ok
Test #8:
score: 6
Accepted
time: 0ms
memory: 3460kb
input:
2 253519292 302668732 E 436627396 119560628 S
output:
result:
ok
Test #9:
score: 6
Accepted
time: 0ms
memory: 3616kb
input:
2 741954822 709863076 W 516385128 484293380 S
output:
1 2
result:
ok
Test #10:
score: 6
Accepted
time: 0ms
memory: 3616kb
input:
2 268851874 524109226 E 503673708 758931058 N
output:
1 2
result:
ok
Test #11:
score: 6
Accepted
time: 0ms
memory: 3616kb
input:
2 629380956 395789270 S 557401140 467769088 E
output:
1 2
result:
ok
Test #12:
score: 6
Accepted
time: 0ms
memory: 3528kb
input:
2 606361496 587557658 N 667076156 526843000 W
output:
1 2
result:
ok
Test #13:
score: 6
Accepted
time: 0ms
memory: 3592kb
input:
2 270428340 629167054 N 270428342 179345630 S
output:
1 2
result:
ok
Subtask #2:
score: 0
Wrong Answer
Test #14:
score: 0
Wrong Answer
time: 0ms
memory: 3632kb
input:
100 32 46 N 8 24 W 74 86 W 2 76 N 90 70 N 34 74 N 4 68 N 42 26 N 66 94 N 28 40 W 96 12 W 82 78 W 54 24 N 36 42 W 92 68 W 0 26 N 14 54 N 94 66 N 26 52 N 66 12 W 72 6 W 64 96 W 6 20 N 4 22 W 26 42 N 40 28 W 70 76 N 18 60 N 62 16 N 30 48 N 36 36 W 42 36 W 52 94 N 62 98 N 0 78 N 70 2 W 28 50 N 80 80 W 8...
output:
26 35 69
result:
FAIL Unexpected end of file - token expected (/var/uoj_data/9161/14.ans)
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Time Limit Exceeded
Test #58:
score: 0
Time Limit Exceeded
input:
200000 526715640 430855204 E 731546662 226024182 S 254814720 702756124 E 227354364 730216480 S 764250602 193320242 S 150102088 807468756 E 204858572 752712272 S 635512190 322058654 E 403910248 553660596 S 257917918 4587926 S 949444340 8126504 S 907805098 49765746 S 553836306 403734538 S 40977864 617...
output:
result:
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%