Submission #50627338
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}
void solve(std::istream& is, std::ostream& os) {
Num n, m;
is >> n >> m;
std::vector<std::vector<std::tuple<Num, Num, Num, Num, Num>>> stations(n);
std::optional<Num> lst_n;
for(Num i{0}; i<m; ++i) {
Num l, d, k, c, a, b;
is >> l >> d >> k >> c >> a >> b;
--a;
--b;
stations[b].push_back(std::make_tuple(a, l, d, k, c));
if (b != (n-1)) {
continue;
}
const Num lst = l + (k - 1) * d + c;
if (!lst_n.has_value()) {
lst_n = lst;
} else {
lst_n = std::max(lst_n.value(), lst);
}
}
if (!lst_n.has_value()) {
for(Num i{0}; i<(n-1); ++i) {
os << "Unreachable\n";
}
return;
}
std::priority_queue<std::pair<Num, Num>> q;
std::vector<std::optional<Num>> ts(n);
ts.at(n-1) = lst_n.value();
q.push(std::make_pair(lst_n.value(), n-1));
while(!q.empty()) {
const auto [src, from] = q.top();
q.pop();
std::map<Num, Num> tos;
for(const auto& [to, l, d, k, c] : stations[from]) {
const auto dst = src - c;
if (dst < l) {
continue;
}
const Num fst = l;
const Num dept = l + std::clamp((dst - l) / d, 0LL, k-1) * d;
if (tos.contains(to)) {
tos[to] = std::max(tos[to], dept);
} else {
tos[to] = dept;
}
}
for(const auto& [to, t] : tos) {
if (!ts.at(to).has_value() || (ts.at(to).value() < t)) {
ts.at(to) = t;
q.push(std::make_pair(t, to));
}
}
}
for(Num i{0}; i<(n-1); ++i) {
if (ts.at(i).has_value()) {
os << ts.at(i).value() << "\n";
} else {
os << "Unreachable\n";
}
}
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - Last Train |
| User |
zettsut |
| Language |
C++ 20 (gcc 12.2) |
| Score |
450 |
| Code Size |
2643 Byte |
| Status |
AC |
| Exec Time |
359 ms |
| Memory |
29552 KiB |
Compile Error
Main.cpp: In function ‘void solve(std::istream&, std::ostream&)’:
Main.cpp:68:23: warning: unused variable ‘fst’ [-Wunused-variable]
68 | const Num fst = l;
| ^~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
450 / 450 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3496 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3484 KiB |
| 00_sample_02.txt |
AC |
1 ms |
3364 KiB |
| 01_random_03.txt |
AC |
340 ms |
23364 KiB |
| 01_random_04.txt |
AC |
359 ms |
23444 KiB |
| 01_random_05.txt |
AC |
346 ms |
23328 KiB |
| 01_random_06.txt |
AC |
343 ms |
23416 KiB |
| 01_random_07.txt |
AC |
343 ms |
23388 KiB |
| 01_random_08.txt |
AC |
320 ms |
21920 KiB |
| 01_random_09.txt |
AC |
319 ms |
21936 KiB |
| 01_random_10.txt |
AC |
288 ms |
17672 KiB |
| 01_random_11.txt |
AC |
247 ms |
14988 KiB |
| 01_random_12.txt |
AC |
311 ms |
19052 KiB |
| 01_random_13.txt |
AC |
151 ms |
10876 KiB |
| 01_random_14.txt |
AC |
61 ms |
7856 KiB |
| 01_random_15.txt |
AC |
74 ms |
6876 KiB |
| 01_random_16.txt |
AC |
121 ms |
10500 KiB |
| 01_random_17.txt |
AC |
285 ms |
17676 KiB |
| 01_random_18.txt |
AC |
289 ms |
20740 KiB |
| 01_random_19.txt |
AC |
286 ms |
20736 KiB |
| 01_random_20.txt |
AC |
294 ms |
20800 KiB |
| 01_random_21.txt |
AC |
288 ms |
17616 KiB |
| 01_random_22.txt |
AC |
242 ms |
15024 KiB |
| 01_random_23.txt |
AC |
181 ms |
12304 KiB |
| 01_random_24.txt |
AC |
153 ms |
11808 KiB |
| 01_random_25.txt |
AC |
342 ms |
29552 KiB |
| 01_random_26.txt |
AC |
347 ms |
29324 KiB |
| 01_random_27.txt |
AC |
341 ms |
29412 KiB |
| 01_random_28.txt |
AC |
350 ms |
29364 KiB |
| 01_random_29.txt |
AC |
10 ms |
11092 KiB |
| 01_random_30.txt |
AC |
32 ms |
4532 KiB |
| 01_random_31.txt |
AC |
125 ms |
8356 KiB |
| 01_random_32.txt |
AC |
223 ms |
13624 KiB |