Codechef Delivery Man Problem Code: TADELIVE Solution

 #include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std;
struct ab{
  int diff;
  int a;
  int b;
};
int main() {  
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int n,x,y;
  cin>>n>>x>>y;
  int a[(int)(1e5)+2],b[(int)(1e5)+2];
  for(int i=0;i<n;i++)
    cin>>a[i];
  for(int i=0;i<n;i++)
    cin>>b[i];
  ab c[(int)(1e5)+2];
  for(int i=0;i<n;i++){
    c[i].diff=a[i]-b[i];
    c[i].a=a[i];
    c[i].b=b[i];
  }
  sort(c,c+n,[](auto x,auto y){
    return x.diff>y.diff;
  });
  int sum=0;
  for(int i=0;i<min(x,n-y);i++)
    sum+=c[i].a;
  for(int i=min(x,n-y);i<max(x,n-y);i++)
    sum+=(c[i].diff>0?c[i].a:c[i].b);
  for(int i=max(x,n-y);i<n;i++)
    sum+=c[i].b;
  cout<<sum;
  return 0;
}

Comments