• Source
    1. #include <iostream>
    2. #include <algorithm>
    3. using namespace std;
    4.  
    5. struct data
    6. {
    7. long long sum;
    8. long long sale;
    9. } typedef data;
    10.  
    11. int cmp (data a, data b)
    12. {
    13. if (a.sum>b.sum) return 0;
    14. return 1;
    15. }
    16.  
    17. int main ()
    18. {
    19. int n;
    20. long long S;
    21. cin>>n>>S;
    22. data cow[1003];
    23. long long a, b;
    24. for (int i=1; i<=n; i++)
    25. {
    26. cin>>a>>b;
    27. cow[i].sum=a+b;
    28. cow[i].sale=(a+b)-((a/2)+b);
    29. }
    30. sort (cow+1, cow+n+1, cmp);
    31. int dem=0;
    32. for (int i=1; i<=n; i++)
    33. {
    34. if (S>=cow[i].sum)
    35. {
    36. dem++;
    37. S-=cow[i].sum;
    38. }
    39. else
    40. {
    41. long long SaleMax=cow[i].sale;
    42. for (int j=i; j>=1; j--)
    43. {
    44. if (cow[j].sale>SaleMax) SaleMax=cow[j].sale;
    45. }
    46. S+=SaleMax;
    47. if (S>=cow[i].sum)
    48. {
    49. dem++;
    50. S-=cow[i].sum;
    51. }
    52. else break;
    53. }
    54. }
    55. cout<<dem;
    56. return 0;
    57. }