Submission #1174095

#TimeUsernameProblemLanguageResultExecution timeMemory
1174095irmuunCatfish Farm (IOI22_fish)C++17
100 / 100
191 ms32236 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() const ll N=1e5+5; int n,m,sz[N]; vector<ll>dp[2][N]; vector<pair<int,int>>f[N]; ll max_weights(int N,int M,vector<int>X,vector<int>Y,vector<int>W){ n=N,m=M; for(int i=0;i<n;i++){ f[i].pb({0,0}); } for(int i=0;i<m;i++){ f[X[i]].pb({Y[i],W[i]}); } for(int i=0;i<n;i++){ f[i].pb({n,0}); } for(int i=0;i<n;i++){ sort(all(f[i])); sz[i]=f[i].size(); dp[0][i].resize(sz[i]); dp[1][i].resize(sz[i]); fill(all(dp[0][i]),0); fill(all(dp[1][i]),0); } ll ans=0; for(int i=1;i<n;i++){ ll mx=0; for(ll x:dp[0][i-1]){ mx=max(mx,x); } for(ll x:dp[1][i-1]){ mx=max(mx,x); } ll val_up=0; int k=0; // ihseh uyed for(int j=0;j<sz[i];j++){ while(k<sz[i-1]&&f[i-1][k].ff<f[i][j].ff){ val_up=max(val_up,dp[0][i-1][k]); val_up+=f[i-1][k].ss; k++; } dp[0][i][j]=max(dp[0][i][j],max(mx,val_up)); } // bagasah uyed ll val_down=0; k=sz[i-1]-1; for(int j=sz[i]-1;j>=0;j--){ while(k>=0&&f[i-1][k].ff>f[i][j].ff){ val_down=max(val_down,dp[0][i-1][k]); val_down=max(val_down,dp[1][i-1][k]); k--; } val_down+=f[i][j].ss; dp[1][i][j]=max(dp[1][i][j],max(mx,val_down)); } } for(ll j=0;j<sz[n-1];j++){ ans=max({ans,dp[0][n-1][j],dp[1][n-1][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...