fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int arr[100500],brr[100500];
  4. int ef1(int x,int n){
  5. int l=1,r=n,ans=-1;
  6. while(l<=r){
  7. int mid=(l+r)/2;
  8. if(arr[mid]>x){
  9. r=mid-1;
  10. }else if(arr[mid]<=x){
  11. ans=x-arr[mid];
  12. l=mid+1;
  13. }
  14. }
  15. return ans;
  16. }
  17. int ef4(int x,int n){
  18. int l=1,r=n,ans=-1;
  19. while(l<=r){
  20. int mid=(l+r)/2;
  21. if(arr[mid]<x){
  22. l=mid+1;
  23. }else if(arr[mid]>=x){
  24. ans=arr[mid]-x;
  25. r=mid-1;
  26. }
  27. }
  28. return ans;
  29. }
  30. int main(){
  31. ios::sync_with_stdio(false);
  32. cin.tie(0),cout.tie(0);
  33. int n,m;
  34. cin>>n>>m;
  35. for(int i=1;i<=n;i++){
  36. cin>>arr[i];
  37. }
  38. for(int i=1;i<=m;i++){
  39. cin>>brr[i];
  40. }
  41. sort(arr+1,arr+1+n);
  42. int ans=0;
  43. for(int i=1;i<=m;i++){
  44. int minn1=ef1(brr[i],n),minn2=ef4(brr[i],n);
  45. if(minn1==-1){
  46. ans+=minn2;
  47. continue;
  48. }else if(minn2==-1){
  49. ans+=minn1;
  50. continue;
  51. }
  52. int cnt=min(minn1,minn2);
  53. ans+=cnt;
  54. }
  55. cout<<ans<<"\n";
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0.01s 5296KB
stdin
4 3
513 598 567 689
500 600 550
stdout
32