Submission #966211

#TimeUsernameProblemLanguageResultExecution timeMemory
966211andrej246Catfish Farm (IOI22_fish)C++17
18 / 100
76 ms7276 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; #define NL '\n' #define EL cout << NL #define FOR(i,n) for(int i = 0; i < (n); i++) #define FORS(i,s,n) for(int i = (s); i < (n); i++) #define PRINTV(v) for(auto a:v) {cout << a << " ";} EL; #define PRINTVV(v) for(auto a:v) {PRINTV(a);} #define f first #define s second #define all(v) (v).begin(),(v).end() #define STRP(p) "{" << (p).f << "," << (p).s << "}" #define PRINTVP(v) for(auto a:v) {cout << STRP(a) << " ";} EL; #define PRINTVVP(v) for(auto a:v) {PRINTVP(a);} typedef long long ll; typedef vector<ll> vl; typedef vector<vl> vvl; typedef pair<ll,ll> pl; typedef vector<pl> vpl; typedef vector<vpl> vvpl; long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { bool even = true; bool smallx = true; bool smally = true; FOR(i,M) { if (X[i] % 2 == 1) even = false; if (X[i] > 1) smallx = false; if (Y[i] != 0) smally = false; } if (even) { ll res = 0; FOR(i,M) { res += W[i]; } return res; } if (smallx) { vl left(N); vl right(N); FOR(i,M) { if (X[i] == 0) left[Y[i]] = W[i]; else right[Y[i]] = W[i]; } if (N == 2) { return max(right[0]+right[1],left[0]+left[1]); } ll ans = 0; FOR(i,N) { ans += right[i]; } ll psum = ans; FOR(i,N) { psum += left[i]-right[i]; ans = max(ans,psum); } return ans; } if (smally) { vector<array<array<ll,2>,2>> dp(N); vl a(N); FOR(i,M) a[X[i]] = W[i]; dp[0][0] = {0,0}; dp[0][1] = {0,0}; FORS(i,1,N) { dp[i][0][0] = max(dp[i-1][0][0],dp[i-1][1][0]); dp[i][1][0] = max(dp[i-1][0][1],dp[i-1][1][1]) + a[i]; dp[i][0][1] = max(dp[i-1][1][0],dp[i-1][0][0] + a[i-1]); dp[i][1][1] = max(dp[i-1][0][1],dp[i-1][1][1]); } return max(dp[N-1][0][0],max(dp[N-1][0][1],max(dp[N-1][1][0],dp[N-1][1][1]))); } }

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:78:1: warning: control reaches end of non-void function [-Wreturn-type]
   78 | }
      | ^
#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...