Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define forx(x1,y1) for(unsigned long long x1=0;x1<y1;++x1)
- #define INF 1e9
- #define all(x2) begin(x2),end(x2)
- #define size(t) ((ld)(t.size()))
- #define last(x) (*(x.end()-1))
- using ll= long long;
- using ld= long double;
- using ull=unsigned long long;
- /*cout.setf(ios::fixed);
- cout.precision(6);*/
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- ll n,q;
- cin>>n>>q;
- vector<ll>v(n),m(q);
- forx(i,n)
- cin>>v[i];
- forx(i,q)
- cin>>m[i];
- stable_sort(all(v));
- stable_sort(all(m));
- ll res=0;
- auto a=lower_bound(all(m),v[0]);
- auto b=a;
- if(a!=m.begin()){
- if(abs(v[0]-*(--b))<abs(v[0]-*(a)))
- a=b;
- }
- res+=abs(v[0]-*(a));
- for(ll i=1;i<size(v)-1;i+=2)
- res+=abs(v[i]-v[i+1]);
- ll num=res;
- for(ll i=1;i<size(v);++i){
- if(i%2==1){
- num-=abs(v[i]-v[i+1]);
- num-=abs(v[i-1]-*a);
- num+=abs(v[i-1]-v[i+1]);
- a=lower_bound(all(m),v[i]);
- b=a;
- if(a!=m.begin()){
- if(abs(v[i]-*(--b))<abs(v[i]-*(a)))
- a=b;
- }
- num+=abs(v[i]-*a);
- }
- else{
- num-=abs(v[i-1]-*a);
- num-=abs(v[i]-v[i-2]);
- num+=abs(v[i-1]-v[i-2]);
- a=lower_bound(all(m),v[i]);
- b=a;
- if(a!=m.begin()){
- if(abs(v[i]-*(--b))<abs(v[i]-*(a)))
- a=b;
- }
- num+=abs(v[i]-*a);
- }
- if(num<res)
- res=num;
- }
- cout<<res;
- }
Advertisement
Add Comment
Please, Sign In to add comment