Submission #994182

#TimeUsernameProblemLanguageResultExecution timeMemory
994182cpdreamerCatfish Farm (IOI22_fish)C++17
35 / 100
959 ms2097152 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define V vector #define pb push_back long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,std::vector<int> W) { vector<vector<long long >>grid(N+1,vector<long long>(N+1,0)); for(int i=0;i<M;i++){ grid[X[i]][Y[i]+1]+=W[i]; } for(int i=0;i<N;i++){ for(int j=1;j<=N;j++){ grid[i][j]+=grid[i][j-1]; } } V<V<V<ll>>>dp(N,V<V<ll>>(N+1,V<ll>(N+1,0))); V<V<V<ll>>>vp(N,V<V<ll>>(N+1,V<ll>(N+1,0))); for(int i=0;i<=N;i++){ for(int j=0;j<=N;j++){ dp[0][i][j]=max(0LL,grid[0][j]-grid[0][i]); vp[0][i][j]=dp[0][i][j]+max(0LL,grid[1][i]-grid[1][j]); } } for(int i=1;i<N;i++){ for(int j=0;j<=N;j++){ V<ll>a; for(int g=0;g<=N;g++) a.pb(dp[i-1][g][j]); for(int g=1;g<=N;g++) a[g]=max(a[g],a[g-1]); V<ll>b; for(int g=0;g<=N;g++) b.pb(vp[i-1][g][j]); for(int g=N-1;g>=0;g--) b[g]=max(b[g],b[g+1]); for(int g=0;g<=N;g++){ if(g<=j){ dp[i][j][g]=b[0]; } else{ dp[i][j][g]=max(a[g]+grid[i][g]-grid[i][j],b[g]); } vp[i][j][g]=dp[i][j][g]+max(0LL,grid[i+1][j]-grid[i+1][g]); } } } ll ans=LLONG_MIN; for(int i=0;i<=N;i++){ ans=max(ans,dp[N-1][i][0]); } 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...