#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5e5+1;
ll c[N];
ll s[N];
void upsolve(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;++i){
cin>>c[i];
}
for(int i=1;i<=n;++i){
cin>>s[i];
}
ll answ=-1e18;
int l,r;
for(int i=1;i<=n;++i){
multiset<ll> st;
ll cur=0ll;
for(int j=i;j<=n;++j){
cur-=c[j];
if(st.size()<k){
st.insert(s[j]);
cur+=s[j];
}
else{
if(*st.begin()<s[j]){
cur-=*st.begin();
st.erase(st.begin());
st.insert(s[j]);
cur+=*st.begin();
}
}
if(st.size()>=k){
if(answ<cur){
answ=cur;
l=i;
r=j;
}
}
}
}
cout<<answ<<'\n';
vector<pair<ll,int>> o;
for(int i=l;i<=r;++i){
o.push_back({s[i],i});
}
sort(o.rbegin(),o.rend());
vector<int> an(n+1,0);
for(int i=0;i<k;++i){
an[o[i].second]=1;
}
for(int i=1;i<=n;++i){
cout<<an[i];
}
}
int main()
{
int t;
t=1;
while(t--){
upsolve();
}
return 0;
}
| # | 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... |