Submission #1191193

#TimeUsernameProblemLanguageResultExecution timeMemory
1191193UnforgettableplTricks of the Trade (CEOI23_trade)C++20
25 / 100
1024 ms2162688 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,K; cin >> N >> K; vector<int> c(N+1),s(N+1); for(int i=1;i<=N;i++)cin>>c[i]; for(int i=1;i<=N;i++)cin>>s[i]; vector DP(N+1,vector<int>(K+1)); vector isOpt(N+1,vector<bool>(K+1)); for(int i=1;i<=K;i++)DP[0][i]=-1e15; pair<int,int> ans = {-1e15,0}; for(int i=1;i<=N;i++){ for(int j=1;j<=K;j++){ DP[i][j]=max(DP[i-1][j]-c[i],DP[i-1][j-1]-c[i]+s[i]); if(DP[i][j]==DP[i-1][j-1]-c[i]+s[i])isOpt[i][j]=true; } ans = max(ans,{DP[i][K],i}); } // cout << "DEBUG:\n"; // for(int i=1;i<=K;i++){ // int carm = -1e15; // for(int j=1;j<=N;j++)carm=max(carm,DP[j][i]); // cout << carm << ' '; // } // cout << "\nDEBUG END\n"; cout << ans.first << '\n'; vector<bool> seq(N+1); int x = ans.second; for(int i=K;i;i--){ while(!isOpt[x][i])x--; seq[x]=true; x--; } for(int i=1;i<=N;i++)cout<<(int)seq[i]; cout << '\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...