Submission #629569

#TimeUsernameProblemLanguageResultExecution timeMemory
629569arnold518Catfish Farm (IOI22_fish)C++17
0 / 100
92 ms21156 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 3000; const ll INF = 1e18; int N, M; vector<pii> V[MAXN+10]; ll dp1[MAXN+10][MAXN+10], dp2[MAXN+10][MAXN+10], P[MAXN+10]; ll max_weights(int _N, int _M, vector<int> _X, vector<int> _Y, vector<int> _W) { N=_N; M=_M; ll ret=0; for(int i=0; i<M; i++) { V[_X[i]+1].push_back({_Y[i]+1, _W[i]}); ret+=_W[i]; } return ret; for(int i=1; i<=N; i++) { sort(V[i].begin(), V[i].end()); } for(int i=0; i<=N; i++) for(int j=0; j<=N; j++) dp1[i][j]=dp2[i][j]=-INF; for(int i=0; i<=N; i++) dp2[0][i]=0; dp1[0][0]=0; dp2[0][0]=0; for(int i=1; i<=N+1; i++) { int t=V[i].size()-1; P[N]=dp1[i-1][N]; for(int j=N-1; j>=0; j--) { int tt=0; if(t>=0 && V[i][t].first==j+1) tt=V[i][t--].second; P[j]=max(P[j+1]+tt, dp1[i-1][j]); } for(int j=0; j<=N; j++) dp1[i][j]=max(dp2[i-1][j], P[j]); ll p=0, q=0; t=0; for(int j=0; j<=N; j++) { int tt=0; if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second; p=max(p, dp1[i-1][j]); q+=tt; P[j]=max(P[j], p)+q; } for(int j=0; j<=N; j++) dp2[i][j]=max(dp2[i][j], P[j]); t=0; P[0]=0; for(int j=1; j<=N; j++) { int tt=0; if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second; P[j]=max(P[j-1]+tt, dp2[i-1][j]); } for(int j=0; j<=N; j++) dp2[i][j]=max(dp2[i][j], P[j]); } for(int i=1; i<=N; i++) { for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n"); } printf("\n"); for(int i=1; i<=N; i++) { for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n"); } return max(dp1[N+1][0], dp2[N+1][0]); }

Compilation message (stderr)

fish.cpp: In function 'll max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:54:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
      |                ~^~~~~~~~~~~~
fish.cpp:64:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |             if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
      |                ~^~~~~~~~~~~~
fish.cpp:72:9: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   72 |         for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n");
      |         ^~~
fish.cpp:72:61: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   72 |         for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n");
      |                                                             ^~~~~~
fish.cpp:77:9: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   77 |         for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n");
      |         ^~~
fish.cpp:77:61: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   77 |         for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n");
      |                                                             ^~~~~~
#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...