#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |