Submission #1056948

#TimeUsernameProblemLanguageResultExecution timeMemory
1056948noyancanturkCatfish Farm (IOI22_fish)C++17
35 / 100
1061 ms163920 KiB
#include "fish.h" #include<bits/stdc++.h> using namespace std; using lint=long long; const int lim=3e3+100; using pii=pair<int,lint>; int n,m; lint dp[lim][lim],up[lim][lim]; vector<pii>pref[lim]; lint p(int i,int l,int r){ auto rp=lower_bound(pref[i].begin(),pref[i].end(),pii{r+1,0}), lp=lower_bound(pref[i].begin(),pref[i].end(),pii{l,0}); rp--; if(lp==pref[i].begin())return rp->second; lp--; return rp->second-lp->second; } lint max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { n=N,m=M; for(int i=0;i<m;i++){ pref[X[i]].push_back({Y[i]+1,W[i]}); } for(int i=0;i<=n;i++){ pref[i].push_back({0,0}); sort(pref[i].begin(),pref[i].end()); for(int j=1;j<pref[i].size();j++){ pref[i][j].second+=pref[i][j-1].second; } } n=N,m=M; for(int i=0;i<=n;i++){ dp[0][i]=p(1,0,i); } for(int i=1;i<n;i++){ lint max1=0; for(int j=0;j<=n;j++){ max1=max(max1,up[i-1][j]-p(i-1,0,j)); dp[i][j]=max(dp[i][j],max1+p(i-1,0,j)+p(i+1,0,j)); up[i][j]=max(up[i][j],max1+p(i-1,0,j)); up[i][j]=max(up[i][j],dp[i-1][j]); } max1=0; for(int j=n;0<=j;j--){ max1=max(max1,dp[i-1][j]); dp[i][j]=max(dp[i][j],max1-p(i,0,j)+p(i+1,0,j)); } } lint ans=0; for(int i=0;i<=n;i++){ ans=max(ans,dp[n-1][i]); } return ans; }

Compilation message (stderr)

fish.cpp: In function 'lint max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:33:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(int j=1;j<pref[i].size();j++){
      |                 ~^~~~~~~~~~~~~~~
#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...