#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int n,k;
cin>>n>>k;
int a[n],b[n],c[n],d[n];
for(int i=0;i<n;i++)cin>>a[i];
ll ans=0,sm1=0,sm2=0;
vector<int> pos,neg;
for(int i=0;i<n;i++)cin>>b[i],d[i]=c[i]=a[i]-b[i],ans+=abs(c[i]);
for(int i=0;i<n;i++)
{
if(c[i]<0)
{
neg.push_back(c[i]);
}
else
{
pos.push_back(c[i]);
}
}
sort(c,c+n);
sort(d,d+n);
sort(begin(pos),end(pos));
sort(begin(neg),end(neg));
vector<int> tr;
int sz=pos.size();
if(sz)
{
tr.push_back(-pos[sz/2]);
tr.push_back(-pos[min(n-k,sz)/2]);
}
sz=neg.size();
if(sz)
{
tr.push_back(-neg[sz/2]);
tr.push_back(-neg[min(n-k,sz)/2]);
}
tr.push_back(-d[n/2]);
tr.push_back(-d[(n-k)/2]);
reverse(d,d+n);
tr.push_back(-d[(n-k)/2]);
tr.push_back(-d[n/2]);
for(auto x:tr)
{
for(int i=0;i<n-k;i++)
{
c[i]=abs(d[i]+x);
}
sort(c,c+n-k);
ll cur=0;
for(int i=0;i<n-k;i++)
{
cur+=c[i];
}
ans=min(ans,cur);
}
reverse(d,d+n);
for(auto x:tr)
{
for(int i=0;i<n-k;i++)
{
c[i]=abs(d[i]+x);
}
sort(c,c+n-k);
ll cur=0;
for(int i=0;i<n-k;i++)
{
cur+=c[i];
}
ans=min(ans,cur);
}
cout<<ans<<endl;
}
| # | 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... |
| # | 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... |