Advertisement
_no0B

Untitled

Nov 7th, 2021
732
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define N ((int)6e4 + 5)
  4. #define MOD ((int)1e9 + 7)
  5. #define MAX ((int)1e9 + 7)
  6. #define MAXL ((ll)1e18 + 7)
  7. #define MAXP ((int)1e3 + 7)
  8. #define thr 1e-8
  9. #define pi acos(-1)  /// pi = acos ( -1 )
  10. #define fastio ios_base::sync_with_stdio(false),cin.tie(NULL)
  11. #define endl "\n"
  12.  
  13. using namespace std;
  14.  
  15. int dpp[102][N];
  16.  
  17. vector < pair < int , int > > neg;
  18.  
  19. int call(int idx , int rem)
  20. {
  21.     if(rem < 0) return -MAX;
  22.     if(idx >= neg.size()) return 0;
  23.     if(dpp[idx][rem] != -1) return dpp[idx][rem];
  24.     int ans = call(idx+1,rem);
  25.     if(rem + neg[idx].second >= neg[idx].first) ans = max( ans , call(idx+1 , rem + neg[idx].second ) + 1);
  26.     return dpp[idx][rem] = ans;
  27. }
  28.  
  29. int main()
  30. {
  31.    /// problem: https://codeforces.com/problemset/problem/1203/F2
  32.     fastio;
  33.     int n , r;
  34.     cin>>n>>r;
  35.     vector < pair < int , int > > vec;
  36.     for(int i = 1 ; i <= n ; i++){
  37.         int a , b;
  38.         cin>>a>>b;
  39.         if(b >= 0) vec.push_back({a,b});
  40.         else neg.push_back({a+b,b});
  41.     }
  42.     sort(vec.begin(),vec.end());
  43.     int ans = 0;
  44.     for(auto p:vec){
  45.         if(r >= p.first){
  46.             r += p.second;
  47.             ans++;
  48.         }
  49.         else break;
  50.     }
  51.  
  52.     sort(neg.begin(),neg.end());
  53.     reverse(neg.begin(),neg.end());
  54.     memset(dpp,-1,sizeof dpp);
  55.     cout<<call(0,r) + ans<<endl;
  56.     return 0;
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement