Submission #859558

#TimeUsernameProblemLanguageResultExecution timeMemory
859558kim메기 농장 (IOI22_fish)C++17
0 / 100
183 ms34604 KiB
#include "fish.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define int ll #define pb push_back #define pii pair<int,int> #define f first #define s second struct A{ int x,y,w; A(int x_,int y_,int w_):x(x_),y(y_),w(w_){} static bool cmpX(const A&l,const A&r){ if(l.x==r.x) return l.y<r.y; return l.x<r.x; } static bool cmpY(const A&l,const A&r){ if(l.y==r.y) return l.x<r.x; return l.y<r.y; } }; vector<A> fish; int dp1[305][305],dp2[305][305],dp0[305][305]; int n,m; vector<pii> fx[100005],fy[100005]; int arr[305][305]; ll max_weights(int32_t N,int32_t M,vector<int32_t> X,vector<int32_t> Y,vector<int32_t> W) { n=N; m=M; for(int i=0;i<M;++i){ ++X[i],++Y[i]; } for(int i=0;i<M;++i){ fish.emplace_back(X[i],Y[i],W[i]); fx[X[i]].emplace_back(Y[i],W[i]); fy[Y[i]].emplace_back(X[i],W[i]); arr[X[i]][Y[i]]=W[i]; } sort(fish.begin(),fish.end(),A::cmpY); for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ dp0[i][j]=arr[i][j]+dp0[i][j-1]; } } for(int i=1;i<=n;++i){ for(int j=0;j<=n;++j){ for(int k=0;k<=n;++k){ if(k==j){ dp1[i][j]=max(dp1[i][j],dp1[i-1][k]); } else if(k<j){ dp1[i][j]=max(dp1[i][j],dp1[i-1][k]+dp0[i-1][j]-dp0[i-1][k]); } else{ dp1[i][j]=max(dp1[i][j],dp1[i-1][k]+dp0[i][k]-dp0[i][j]); } } } } int ans=0; for(int j=0;j<=n;++j) ans=max(ans,dp1[n][j]); 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...