fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long maxTip(vector<long long> a, vector<long long> b, int x, int y, int n){
  5.  
  6. vector<long long> diff(n);
  7. long long old_sum = 0, maxTip = LLONG_MIN;
  8.  
  9. for (int i = 0; i < n; i++){
  10. diff[i] = a[i] - b[i];
  11. old_sum += b[i];
  12. }
  13.  
  14. sort(diff.begin(), diff.end(), greater<long long>());
  15.  
  16. vector<long long> prefixD(n+1, 0);
  17. for (int i = 1; i <= n; i++){
  18. prefixD[i] = prefixD[i-1] + diff[i - 1];
  19. }
  20.  
  21. maxTip = max(maxTip, old_sum);
  22.  
  23. for(int i = 1; i <= n; i++){
  24.  
  25. if((i <= x) && ((n-i) <= y)){
  26.  
  27. long long new_sum = old_sum + prefixD[i];
  28. maxTip = max(maxTip, new_sum);
  29.  
  30. }
  31. }
  32.  
  33.  
  34. return maxTip;
  35.  
  36.  
  37. }
  38.  
  39. int main() {
  40. // your code goes here
  41. int n, x, y;
  42. cin >> n >> x >> y;
  43. vector<long long> a(n);
  44. vector<long long> b(n);
  45.  
  46. for (int i = 0; i < n; i++){
  47. cin >> a[i];
  48. }
  49. for (int i = 0; i < n; i++){
  50. cin >> b[i];
  51. }
  52.  
  53. cout << maxTip(a, b, x, y, n);
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 5308KB
stdin
5 3 3
1 2 3 4 5
5 4 3 2 1
stdout
21