ZCO - 16001 [13/15 marks]

PROBLEM: - PROBLEM


Getting 2 test cases wrong, can someone help me what and why i am missing out?

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k;
ll done;
ll r1, r2;

ll solve(vector<ll> a,vector<ll> b){
    int e= n-1, i = 0;
    for(int done=0;done<k;++done){
        
        swap(a[e],b[i]);
        e--;
        i++;
        if(e<0 or i<0){
            break;
        }
        

    }
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    return a[n-1]+b[n-1];



}
int main(){
    cin>>n>>k;
    vector<ll> a;
    vector<ll> b;
    for(int i=0;i<n;++i){
        cin>>r1;
        a.push_back(r1);
    }
    for(int i=0;i<n;++i){
        cin>>r2;
        b.push_back(r2);
    }
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    cout<<min(solve(a,b),solve(b,a));


}