Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- void merge(long a[],long l,long m,long r)
- {
- long n1=m-l+1;
- long n2=r-m;
- long L[n1],R[n2];
- for(long i=0;i<n1;i++)
- L[i]=a[i+l];
- for(long i=0;i<n2;i++)
- R[i]=a[m+1+i];
- long p=0,q=0;
- while(p<n1 && q<n2)
- if(L[p]<R[q])
- a[l++]=L[p++];
- else
- a[l++]=R[q++];
- while(p<n1)
- a[l++]=L[p++];
- while(q<n2)
- a[l++]=R[q++];
- }
- void mergeSort(long a[],long l,long r)
- {
- if(l<r)
- {
- long m=l+(r-l)/2;
- mergeSort(a,l,m);
- mergeSort(a,m+1,r);
- merge(a,l,m,r);
- }
- }
- int main()
- {
- long n,k;
- cin>>n>>k;
- long a[100005],b[100005];
- for(long i=0;i<n;i++)
- cin>>a[i];
- for(long i=0;i<n;i++)
- cin>>b[i];
- mergeSort(a,0,n-1);
- mergeSort(b,0,n-1);
- if(b[n-1]<a[n-1])
- for(long i=0;i<n;i++)
- {
- long temp=a[i];
- a[i]=b[i];
- b[i]=temp;
- }
- for(long z=0;z<k;z++)
- {
- if(b[0]>=a[n-1])
- break;
- long t1=a[n-1],t2=b[0];
- long pos;
- if(a[0]>t2)
- pos=0;
- else if(a[n-2]<t2)
- pos=n-1;
- else
- for(pos=1;pos<n;pos++)
- if(t2>=a[pos-1]&&t2<=a[pos])
- break;
- for(long i=n-1;i>pos;i--)
- a[i]=a[i-1];
- a[pos]=t2;
- for(long i=0;i<n-1;i++)
- b[i]=b[i+1];
- if(b[0]>t1)
- pos=0;
- else if(b[n-2]<t1)
- pos=n-1;
- else
- for(pos=1;pos<n;pos++)
- if(t1>=b[pos-1]&&t1<=b[pos])
- break;
- for(long i=n-1;i>pos;i--)
- b[i]=b[i-1];
- b[pos]=t1;
- }
- cout<<a[n-1]+b[n-1];
- return 0;
- }
Add Comment
Please, Sign In to add comment