P7382 题解

· · 题解

Solution

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const int N=1e5+10;
int n,k,X,A[N],B[N],delta[N];
LL res=LLONG_MAX,sum[N];
LL get(int L,int R)
{
      int mid=(L+R)>>1;
      if((R-L+1)&1) return sum[R]-sum[mid]-sum[mid-1]+sum[L-1];
      else return sum[R]-sum[mid]-sum[mid]+sum[L-1];    
} 
int main()
{
      freopen("simfonija.in","r",stdin);
      freopen("simfonija.out","w",stdout);
      scanf("%d%d",&n,&k);
      for(int i=1;i<=n;i++) scanf("%d",&A[i]);
      for(int i=1;i<=n;i++) scanf("%d",&B[i]);
      for(int i=1;i<=n;i++) delta[i]=A[i]-B[i];
      sort(delta+1,delta+n+1);
      for(int i=1;i<=n;i++) sum[i]=sum[i-1]+delta[i];
      for(int i=1;i<=k+1;i++)   res=min(res,get(i,i+n-k-1)); 
      printf("%lld",res); 
      return 0;
}