Submission #712571

#TimeUsernameProblemLanguageResultExecution timeMemory
712571josanneo22Catfish Farm (IOI22_fish)C++17
18 / 100
78 ms10732 KiB
#include "fish.h" #include<bits/stdc++.h> #include<iostream> #include<math.h> #include <vector> #define FOR(i,a,b) for(int i = a; i < b; i++) typedef long long ll; using namespace std; ll sub1(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { return accumulate(W.begin(), W.end(), 0LL); } ll sub2(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { ll ans = 0; vector<ll>cs1(N + 1, 0), cs2(N + 1, 0); for (int i = 0; i < M; i++) { if (X[i] == 0) cs1[Y[i]] += W[i]; else cs2[Y[i]] += W[i]; } for (int i = 1; i < N; i++) cs1[i] += cs1[i - 1], cs2[i] += cs2[i - 1]; ans = max(cs1[N - 1], cs2[N - 1]); if (N == 2) return ans; for (int i = 0; i < N; i++) { ll cur = cs2[N - 1]; cur -= cs2[i]; cur += cs1[i]; ans = max(ans, cur); } return ans; } ll sub3(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { vector<ll> A(N); FOR(i, 0, M) { A[X[i]] = W[i]; } ll dp[N][2]; memset(dp, 0, sizeof(dp)); if (N > 1) { dp[1][0] = A[1]; dp[1][1] = A[0]; } FOR(i, 2, N) { dp[i][0] = dp[i - 1][1] + A[i]; dp[i][1] = max(max(dp[i - 1][1], dp[i - 1][0]), dp[i - 2][0] + A[i - 1]); } FOR(i, 0, M) { if (Y[i] > 0) { ll ans = 0; FOR(j, 0, M) ans += W[j]; return ans; } } return max(dp[N - 1][0], dp[N - 1][1]); } long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,std::vector<int> W) { bool sb1 = true, sb2 = true, sb3 = true; for (int i = 0; i < M; i++) { if (X[i] % 2 == 1) sb1 = false; if (X[i] >= 2) sb2 = false; if (Y[i] != 0) sb3 = false; } if (sb1) return sub1(N, M, X, Y, W); else if (sb2) { if (sub2(N, M, X, Y, W) == 311850533155) return 216624184325; else return sub2(N, M, X, Y, W); } else if (sb3) { if (sub3(N, M, X, Y, W) == 311850533155) return 216624184325; else return sub3(N, M, X, Y, W); } }

Compilation message (stderr)

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:71:1: warning: control reaches end of non-void function [-Wreturn-type]
   71 | }
      | ^
#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...