fork download
  1. #include <bits/stdc++.h>
  2. #include <functional>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. bool isfeasible(int x1,int y1,int x,int y){
  7. if(x1<=x && y1<=y) return true;
  8. return false;
  9. }
  10.  
  11. int sum_array(vector<int>&b){
  12. int sum=0;
  13. int n=b.size();
  14. for(int i=0;i<n;i++){
  15. sum+=b[i];
  16. }
  17. return sum;
  18. }
  19.  
  20. int sum_selected(vector<int>&c,int k){
  21. int sum1=0;
  22. for(int i=0;i<k;i++){
  23. sum1+=c[i];
  24. }
  25.  
  26. return sum1;
  27. }
  28.  
  29. int max_profit(vector<int>&a,vector<int>&b,int x,int y){
  30. int n=a.size();
  31. vector<int>c(n);
  32. for(int j=0;j<n;j++){
  33. c[j]=a[j]-b[j];
  34. }
  35. int base_profit=sum_array(b);
  36. int profit=base_profit;
  37.  
  38. sort(c.begin(),c.end(),greater<int>());
  39. for(int i=0;i<=x;i++){
  40. int x1=i;
  41. int y1=n-x1;
  42. if(isfeasible(x1,y1,x,y)){
  43. profit=max(profit,base_profit+sum_selected(c,x1));
  44. }
  45. else{
  46. continue;
  47. }
  48. }
  49.  
  50. return profit;
  51. }
  52.  
  53. int main() {
  54. int n;
  55. cin>>n;
  56. int x,y;
  57. cin>>x;
  58. cin>>y;
  59. vector<int>a(n);
  60. vector<int>b(n);
  61. for(int i=0;i<n;i++){
  62. cin>>a[i];
  63.  
  64. }
  65. for(int i=0;i<n;i++){
  66. cin>>b[i];
  67. }
  68. cout<<"Max profit: "<<max_profit(a,b,x,y)<<endl;
  69.  
  70.  
  71.  
  72.  
  73. }
  74.  
Success #stdin #stdout 0s 5308KB
stdin
5 3 3
1 2 3 4 5
5 4 3 2 1
stdout
Max profit: 21