Submission #723851

#TimeUsernameProblemLanguageResultExecution timeMemory
723851vjudge1Catfish Farm (IOI22_fish)C++17
18 / 100
89 ms12332 KiB
//#include "fish.h" #include<bits/stdc++.h> #define ll long long #include <vector> ll mx(ll a,ll b){ if(a>b) return a; return b; } long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,std::vector<int> W) { ll dp[N][2],a[N]; ll x1[N],x2[N]; ll sum=0,say=0,sum0=0,sum1=0,say1=0; for(int i=0;i<N;i++){ x1[i]=x2[i]=dp[i][0]=dp[i][1]=a[i]=0; } for(int i=0;i<M;i++){ a[X[i]]=1ll*W[i]; if(X[i]%2==1){ say=1; } if(X[i]>1){ say1=1; } if(X[i]==0){ x1[Y[i]]=W[i]; sum0+=W[i]; } else{ x2[Y[i]]=W[i]; sum1+=W[i]; } sum+=W[i]; } ll SUM=mx(sum0,sum1); if(say1==0){ for(int i=1;i<N;i++){ x1[i]+=x1[i-1]; x2[i]+=x2[i-1]; } if(N>2){ for(int i=0;i<N;i++){ SUM=mx(SUM,x1[i]+x2[N-1]-x2[i]); } } } dp[0][1]=a[0]; dp[1][0]=a[0]; dp[1][1]=a[1]; ll ans=mx(a[0],a[1]); for(int i=2;i<N;i++){ if(i>2){ dp[i][0]=mx(dp[i-3][0]+a[i-1]+a[i-2],mx(dp[i-1][1],dp[i-1][0])); } else{ dp[i][0]=dp[i-1][1]; } dp[i][1]=dp[i-1][0]+a[i]; } ans=mx(dp[N-1][1],dp[N-1][0]); if(say==0){ ans=sum; } else if(say1==0){ ans=mx(sum0,sum1); if(N>2){ ans=SUM; } } return ans; } /* 9 9 0 0 1 1 0 4 2 0 5 3 0 2 4 0 1 5 0 5 6 0 3 7 0 2 8 0 1 */
#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...