Submission #1079283

#TimeUsernameProblemLanguageResultExecution timeMemory
1079283glupanCatfish Farm (IOI22_fish)C++17
9 / 100
63 ms7252 KiB
#include "fish.h" #include <bits/stdc++.h> #define fore(i, l, r) for(int i=int(l); i<int(r); i++) using namespace std; long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { long long ok=1,ok1=1; fore(i,0,M) { if(X[i] % 2) ok=0; if(X[i] > 1) ok1=0; } long long ans=0; if(ok) fore(i,0,M) ans+=W[i]; else if(ok1) { long long grid[2][N+5]; memset(grid,0,sizeof grid); fore(i,0,M) grid[X[i]][Y[i]] = W[i]; long long sum1=0,sum2=0,temp1=0,temp2=0; if(N > 2) { fore(i,0,N) { sum1+=grid[0][i]; sum2+=grid[1][i]; if(sum1 >= sum2 and abs(sum1-sum2) >= abs(temp1-temp2)) { temp1=sum1; temp2=sum2; } } ans = sum2-temp2+temp1; } else { fore(i,0,N) { sum1+=grid[0][i]; sum2+=grid[1][i]; } return max(sum1,sum2); } } else { long long grid[N+5]; memset(grid,0,sizeof grid); fore(i,0,M) grid[X[i]] = W[i]; long long dp[N+5]; memset(dp,0,sizeof dp); fore(i,0,N) { dp[i] = grid[i+1]; if(i) dp[i] += grid[i-1]; if(i>1) dp[i] += dp[i-2]; if(i) dp[i] = max(dp[i-1],dp[i]); } ans = dp[N-1]; } return ans; }
#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...