Guest User

Bookshelves ZCO

a guest
Oct 31st, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void merge(long a[],long l,long m,long r)
  4. {
  5.     long n1=m-l+1;
  6.     long n2=r-m;
  7.    
  8.     long L[n1],R[n2];
  9.    
  10.     for(long i=0;i<n1;i++)
  11.     L[i]=a[i+l];
  12.     for(long i=0;i<n2;i++)
  13.     R[i]=a[m+1+i];
  14.    
  15.     long p=0,q=0;
  16.    
  17.     while(p<n1 && q<n2)
  18.     if(L[p]<R[q])
  19.     a[l++]=L[p++];
  20.     else
  21.     a[l++]=R[q++];
  22.    
  23.     while(p<n1)
  24.     a[l++]=L[p++];
  25.     while(q<n2)
  26.     a[l++]=R[q++];
  27. }
  28. void mergeSort(long a[],long l,long r)
  29. {
  30.     if(l<r)
  31.     {
  32.         long m=l+(r-l)/2;
  33.         mergeSort(a,l,m);
  34.         mergeSort(a,m+1,r);
  35.         merge(a,l,m,r);
  36.     }
  37. }
  38. int main()
  39. {
  40.     long n,k;
  41.     cin>>n>>k;
  42.     long a[100005],b[100005];
  43.     for(long i=0;i<n;i++)
  44.     cin>>a[i];
  45.     for(long i=0;i<n;i++)
  46.     cin>>b[i];
  47.     mergeSort(a,0,n-1);
  48.     mergeSort(b,0,n-1);
  49.     if(b[n-1]<a[n-1])
  50.         for(long i=0;i<n;i++)
  51.         {
  52.             long temp=a[i];
  53.             a[i]=b[i];
  54.             b[i]=temp;
  55.         }
  56.     for(long z=0;z<k;z++)
  57.     {
  58.         if(b[0]>=a[n-1])
  59.         break;
  60.        
  61.         long t1=a[n-1],t2=b[0];
  62.        
  63.        
  64.         long pos;
  65.         if(a[0]>t2)
  66.             pos=0;
  67.         else if(a[n-2]<t2)
  68.             pos=n-1;
  69.         else
  70.             for(pos=1;pos<n;pos++)
  71.                 if(t2>=a[pos-1]&&t2<=a[pos])
  72.                 break;
  73.         for(long i=n-1;i>pos;i--)      
  74.             a[i]=a[i-1];
  75.             a[pos]=t2;
  76.  
  77.  
  78.         for(long i=0;i<n-1;i++)
  79.             b[i]=b[i+1];
  80.         if(b[0]>t1)
  81.             pos=0;
  82.         else if(b[n-2]<t1)
  83.             pos=n-1;
  84.         else
  85.             for(pos=1;pos<n;pos++)
  86.             if(t1>=b[pos-1]&&t1<=b[pos])
  87.             break;
  88.         for(long i=n-1;i>pos;i--)      
  89.         b[i]=b[i-1];
  90.         b[pos]=t1;
  91.     }
  92.     cout<<a[n-1]+b[n-1];
  93.     return 0;
  94. }
Add Comment
Please, Sign In to add comment