fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define int long long
  5. const int MOD = pow(10,9)+7;
  6. const int MOD2 = 998244353;
  7. const int INF = LLONG_MAX/2;
  8.  
  9. int primes[1000000];
  10.  
  11. void seive(){
  12. fill(primes, primes + 1000000, 1);
  13. primes[0] = primes[1] = 0;
  14. for(int i = 2 ; i*i < 1000000 ; i++){
  15. if(primes[i]){
  16. for(int j = i*i ; j < 1000000 ; j += i){
  17. primes[j] = 0;
  18. }
  19. }
  20. }
  21. }
  22. int factorial(int n){
  23. if(n==0){
  24. return 1;
  25. }
  26. return (n*(factorial(n-1)))%MOD;
  27. }
  28. bool isPrime(int n){
  29. if(n <= 1) return false;
  30. for(int i = 2 ; i*i <= n ; i++){
  31. if(n % i == 0) return false;
  32. }
  33. return true;
  34. }
  35.  
  36. int power(int a, int b){
  37. if(b == 0) return 1;
  38. a %= MOD;
  39. int value = power(a, b / 2);
  40. if(b % 2 == 0){
  41. return (value * value) % MOD;
  42. } else {
  43. return ((value * value) % MOD * (a % MOD)) % MOD;
  44. }
  45. }
  46.  
  47. int gcd(int a, int b){
  48. if(a == 0) return b;
  49. return gcd(b % a, a);
  50. }
  51. void dfs(int node , vector<int>A[] , int visited[] , int sum[] , int parent[] , int values[]){
  52. visited[node] = 1;
  53. for(auto node1 : A[node]){
  54. if(!visited[node1]){
  55. parent[node1] = node;
  56. dfs(node1,A,visited,sum,parent,values);
  57. }
  58. }
  59. int s = 0;
  60. for(auto node1 : A[node]){
  61. if(parent[node]!=node1){
  62. s = max(s,sum[node1]);
  63. }
  64. }
  65. sum[node] = values[node]+s;
  66. }
  67. int spf[1000001];
  68. void SPF(){
  69. for(int i = 2 ; i<=1000000 ; i++){
  70. spf[i] = i;
  71. }
  72. for(int i = 2 ; i<=sqrt(1000000) ; i++){
  73. if(spf[i]==i){
  74. for(int j = i*i ; j<=1000000 ; j+=i){
  75. if(spf[j]==j){
  76. spf[j] = i;
  77. }
  78. }
  79. }
  80. }
  81. }
  82. void solve() {
  83. int n,x,y;
  84. cin>>n>>x>>y;
  85. int A[n],B[n],C[n];
  86. int sum = 0;
  87. for(int i = 0 ; i<n ; i++){
  88. cin>>A[i];
  89. sum += A[i];
  90. }
  91. for(int i = 0 ; i<n ; i++){
  92. cin>>B[i];
  93. }
  94. for(int i = 0 ; i<n ; i++){
  95. C[i] = B[i]-A[i];
  96. }
  97. sort(C,C+n,greater<int>());
  98. for(int i = 1 ; i<n ; i++){
  99. C[i] = C[i] + C[i-1];
  100. }
  101. int maxi = INT_MIN;
  102. for(int i = 0 ; i<=y ; i++){
  103. if(i<=y && (n-i)<=x){
  104. if(i==0){
  105. maxi = max(maxi,sum);
  106. }
  107. else{
  108. maxi = max(maxi,(sum+C[i-1]));
  109. }
  110. }
  111. }
  112. cout<<maxi<<endl;
  113. }
  114. signed main(){
  115. ios::sync_with_stdio(false); cin.tie(NULL);
  116. SPF();
  117. //int t;
  118. //cin >> t;
  119. //while(t--){
  120. solve();
  121. //}
  122. return 0;
  123. }
Success #stdin #stdout 0.02s 12484KB
stdin
5 3 3
1 2 3 4 5
5 4 3 2 1
stdout
21