Mephistopheles_

Best anime battles

Jul 11th, 2021
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define forx(x1,y1) for(unsigned long long x1=0;x1<y1;++x1)
  4. #define INF 1e9
  5. #define all(x2) begin(x2),end(x2)
  6. #define size(t) ((ld)(t.size()))
  7. #define last(x) (*(x.end()-1))
  8. using ll= long long;
  9. using ld= long double;
  10. using ull=unsigned long long;
  11. /*cout.setf(ios::fixed);
  12.     cout.precision(6);*/
  13. int main() {
  14.     ios::sync_with_stdio(false);
  15.     cin.tie(nullptr);
  16.     cout.tie(nullptr);
  17.     ll n,q;
  18.     cin>>n>>q;
  19.     vector<ll>v(n),m(q);
  20.     forx(i,n)
  21.         cin>>v[i];
  22.     forx(i,q)
  23.         cin>>m[i];
  24.     stable_sort(all(v));
  25.     stable_sort(all(m));
  26.     ll res=0;
  27.     auto a=lower_bound(all(m),v[0]);
  28.     auto b=a;
  29.     if(a!=m.begin()){
  30.         if(abs(v[0]-*(--b))<abs(v[0]-*(a)))
  31.             a=b;
  32.     }
  33.     res+=abs(v[0]-*(a));
  34.     for(ll i=1;i<size(v)-1;i+=2)
  35.         res+=abs(v[i]-v[i+1]);
  36.     ll num=res;
  37.     for(ll i=1;i<size(v);++i){
  38.         if(i%2==1){
  39.             num-=abs(v[i]-v[i+1]);
  40.             num-=abs(v[i-1]-*a);
  41.             num+=abs(v[i-1]-v[i+1]);
  42.             a=lower_bound(all(m),v[i]);
  43.             b=a;
  44.             if(a!=m.begin()){
  45.                 if(abs(v[i]-*(--b))<abs(v[i]-*(a)))
  46.                     a=b;
  47.             }
  48.             num+=abs(v[i]-*a);
  49.         }
  50.         else{
  51.             num-=abs(v[i-1]-*a);
  52.             num-=abs(v[i]-v[i-2]);
  53.             num+=abs(v[i-1]-v[i-2]);
  54.             a=lower_bound(all(m),v[i]);
  55.             b=a;
  56.             if(a!=m.begin()){
  57.                 if(abs(v[i]-*(--b))<abs(v[i]-*(a)))
  58.                     a=b;
  59.             }
  60.             num+=abs(v[i]-*a);
  61.         }
  62.         if(num<res)
  63.             res=num;
  64.     }
  65.     cout<<res;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment