Submission #1201497

#TimeUsernameProblemLanguageResultExecution timeMemory
1201497TimoshCatfish Farm (IOI22_fish)C++20
9 / 100
51 ms11332 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) { bool ok = 1; for (auto &i : X) ok &= (i % 2 == 0); if (ok) return accumulate(W.begin(), W.end(), 0ll); if (*max_element(X.begin(), X.end()) <= 1) { vector<long long> A(N), B(N); for (int i = 0; i < M; i++) { if (X[i]) B[Y[i]] = W[i]; else A[Y[i]] = W[i]; } if (N == 2) { return max(A[0] + A[1], B[0] + B[1]); } long long mx, s; s = mx = 0; for (int i = 0; i < N; i++) { s += A[i] - B[i]; mx = max(mx, s); } return mx + accumulate(B.begin(), B.end(), 0ll); } vector<vector<long long>> dp(N + 2, vector<long long>(1)); vector<vector<long long>> A(N, vector<long long>(1)); for (int i = 0; i < M; i++) A[X[i]][0] = W[i]; for (int i = 0; i < N; i++) dp[i + 2][0] = max(dp[i][0] + (i ? A[i - 1][0] : 0ll) + (i == N - 1 ? 0ll : A[i + 1][0]), dp[i + 1][0] + A[i][0]); return dp[N + 1][0]; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...