fork download
  1.  
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define endl "\n"
  5. #define int long long
  6. #define faster() ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  7. const int MOD = 1e9 + 7 ;
  8. void solve() {
  9. int r , g ; cin >> r >> g ;
  10. int total = r + g ; // tong so khoi ban dau
  11. int h = 0 ;
  12. while(h * (h + 1) / 2 <= total) ++h ;
  13. --h ;// tim chieu cao toi da cua thap
  14.  
  15. vector<int> dp(r + 5 , 0); // dp[i] : dung i mau do de xay dung cap do
  16. dp[0] = 1 ; // chua su dung cac mau do thi chi co 1 cach la khong lam gi
  17.  
  18. for(int i = 1 ; i <= h ; i++){
  19. for(int j = r ; j >= i ; j--){
  20. dp[j] += dp[j - i];
  21. dp[j] %= MOD ;
  22. }
  23. }
  24.  
  25. int ans = 0 ;
  26. int maxBlocks = (h + 1) * h / 2 ;
  27. for(int i = 0 ; i <= r ; i++){
  28. int greenBlock = maxBlocks - i ;
  29. if(greenBlock >= 0 && greenBlock <= g){
  30. ans += dp[i];
  31. ans %= MOD ;
  32. }
  33. }
  34. cout << ans << endl;
  35. }
  36.  
  37. signed main() {
  38. faster();
  39. int test = 1 ;
  40. // cin >> test ;
  41. while(test--) solve();
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0s 5268KB
stdin
9 7
stdout
6