Submission #968383

#TimeUsernameProblemLanguageResultExecution timeMemory
968383josanneo22Security Guard (JOI23_guard)C++17
25 / 100
57 ms14520 KiB
#include<bits/stdc++.h> using namespace std; using i64 = long long; const int nax = 200005; int N, M, Q; int _u[nax], _v[nax]; i64 S[nax]; vector<int> G[nax]; bool is_chain() { for (int i = 0; i < M; i++) if (_u[i] != i + 1 || _v[i] != i + 2) return false; return true; } i64 solve1() { i64 ans = 0; for (int i = 2; i <= N; i++) ans += max(S[i], S[i - 1]); for (int i = 1; i <= N - 2; i++) ans -= max(0LL, S[i] - S[i + 1]); // last one cannot save anything return ans; } i64 solve2() { i64 ans = 0; // 1 -> 2 -> 3 -> ... -> N - 1 -> N // get a[2], a[3], a[4]... a[N - 1] for (int i = 2; i <= N - 1; i++) ans += S[i]; return ans + *max_element(S + 1, S + 1 + N); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> N >> M >> Q; for (int i = 1; i <= N; i++) cin >> S[i]; for (int i = 0; i < M; i++) { int u, v; cin >> u >> v; G[u].push_back(v); G[v].push_back(u); _u[i] = u; _v[i] = v; } if (M == N - 1 && Q == 0 && is_chain()) { i64 ans = solve2(); cout << ans << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...