Submission #1022810

#TimeUsernameProblemLanguageResultExecution timeMemory
1022810vjudge1Catfish Farm (IOI22_fish)C++17
0 / 100
1069 ms2097152 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define all(v) v.begin(),v.end() #define sz(s) (int)s.size() #define lb lower_bound #define ub upper_bound const int MAX=2e5+10; vector<pair<ll,ll>> y[MAX]; vector<ll> p[MAX]; vector<vector<ll>> dp[MAX]; vector<ll> can[MAX]; ll getSum(int x,ll l,ll r){ if(l>r)return 0; int L=lb(all(y[x]),make_pair(l,0ll))-y[x].begin(); int R=ub(all(y[x]),make_pair(r+1,0ll))-y[x].begin()-1; if(L<=R){ if(L==0)return p[x][R]; return p[x][R]-p[x][L-1]; } return 0; } long long max_weights(int N, int M, vector<int> X, vector<int> Y,vector<int> W) { for(int i=0;i<M;i++){ X[i]++; Y[i]++; y[X[i]].pb({Y[i],i}); } for(int i=1;i<=N;i++){ if(y[i].empty())continue; sort(all(y[i])); p[i].pb(W[y[i][0].S]); for(int j=1;j<sz(y[i]);j++){ p[i].pb(p[i].back()+W[y[i][j].S]); } } can[0].pb(0); can[N+1].pb(0); for(int i=1;i<=N;i++){ can[i].pb(0); if(i>0){ for(auto [x,b]:y[i-1])can[i].pb(x); } if(i+1<N){ for(auto [x,b]:y[i+1])can[i].pb(x); } sort(all(can[i])); } for(int i=1;i<=N+1;i++){ dp[i].resize(sz(can[i])); for(int j=0;j<sz(dp[i]);j++){ dp[i][j].resize(sz(can[i-1])); for(int k=0;k<sz(can[i-1]);k++){ dp[i][j][k]=0; } } } for(int i=1;i<=N;i++){ for(int j=0;j<sz(can[i]);j++){ for(int k=0;k<sz(can[i-1]);k++){ for(int f=0;f<sz(can[i+1]);f++){ ll nxt=dp[i][j][k]; { int mx=max(can[i+1][f],can[i-1][k]); nxt+=getSum(i,can[i][j]+1,mx); } dp[i+1][f][j]=max(dp[i+1][f][j],nxt); } } } } ll ans=0; for(int j=0;j<sz(can[N]);j++)ans=max(ans,dp[N+1][0][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...