Submission #1201516

#TimeUsernameProblemLanguageResultExecution timeMemory
1201516TimoshCatfish Farm (IOI22_fish)C++20
9 / 100
48 ms7236 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<int> dp(N), A(N + 1); for (int i = 0; i < M; i++) A[X[i]] = W[i]; for (int i = 0; i < N; i++) { dp[i] = A[i + 1] + (i ? A[i - 1] : 0ll); if (i > 1) dp[i] += dp[i - 2]; if (i) { dp[i] = max(dp[i], dp[i - 1] - A[i] + A[i + 1]); } if (i > 1) dp[i] = max(dp[i], dp[i - 2] + A[i + 1]); } return *max_element(dp.begin(), dp.end()); }
#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...