Guest User

Untitled

a guest
Apr 10th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. using namespace __gnu_pbds;
  4. using namespace std;
  5. typedef long long int lli;
  6. #define ff              first
  7. #define ss              second
  8. #define pb              push_back
  9. #define mp              make_pair
  10. #define pii             pair<lli,lli>
  11. #define vi              vector<lli>
  12. #define mii             map<lli,lli>
  13. #define pqb             priority_queue<lli>
  14. #define pqs             priority_queue<lli,vi,greater<lli> >
  15. #define setbits(x)      __builtin_popcountll(x)
  16. #define zrobits(x)      __builtin_ctzll(x)
  17. #define mod             1000000007
  18. #define inf             1e18
  19. #define ps(x,y)         fixed<<setprecision(y)<<x
  20. #define mk(arr,n,type)  type *arr=new type[n];
  21. #define w(x)            lli x; cin>>x; while(x--)
  22. mt19937                 rng(chrono::steady_clock::now().time_since_epoch().count());
  23. #define ONLINE_JUDGE
  24. typedef tree<lli, null_type, less<lli>, rb_tree_tag, tree_order_statistics_node_update> pbds;
  25.  
  26.  
  27. void zanj0()
  28. {
  29.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  30. #ifndef ONLINE_JUDGE
  31.     freopen("input.txt", "r", stdin);
  32.     freopen("output.txt", "w", stdout);
  33. #endif
  34. }
  35. lli b, g, n1, n2;
  36. lli x, y;
  37. lli n;
  38. lli add(lli a, lli b) {
  39.     return ((a % mod) + (b % mod)) % mod;
  40. }
  41. lli help(lli b, lli g, lli n1, lli n2, vector < vector < vector < vector <lli> > > >& dp) {
  42.     if (b == g && b == 0) return 1;
  43.     if (dp[b][g][n1][n2] != -1) return dp[b][g][n1][n2];
  44.     lli ret = 0;
  45.     if (b > 0 && n1 > 0) {
  46.         ret = add(ret, help(b - 1, g, n1 - 1, y, dp));
  47.     }
  48.     if (g > 0 && n2 > 0) {
  49.         ret = add(ret, help(b, g - 1, x, n2 - 1, dp));
  50.     }
  51.     return dp[b][g][n1][n2] = ret;
  52. }
  53. void solve() {
  54.  
  55.     cin >> b >> g >> n1 >> n2;
  56.     x = n1;
  57.     y = n2;
  58.     n = b + g;
  59.     vector < vector < vector < vector <lli> > > > dp(b + 1, vector < vector < vector <lli> > >(g + 1, vector < vector < lli > >(n1 + 1, vector <lli> (n2 + 1, -1))));
  60.     cout << help(b, g, n1, n2, dp) << endl;
  61. }
  62. int main()
  63. {
  64.     zanj0();
  65.     solve();
  66.     return 0;
  67. }
Add Comment
Please, Sign In to add comment