Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- typedef long long ll;
- typedef vector<ll> VLL;
- VLL F1(182, -1), F0(182, -1);
- int z, u;
- ll f1(int n, int z, int u);
- ll f0(int n, int z, int u){
- ll& res = F0[n];
- if (z < 0 or u < 0) return 0;
- if (res != -1) return res;
- if (n == 1 and u == 1) return 1;
- if (n == 1) return 0;
- return res = f1(n-1, z-1, u);
- }
- ll f1(int n, int z, int u){
- ll& res = F1[n];
- if (z < 0 or u < 0) return 0;
- if (res != -1) return res;
- if (n == 1) if (z == 1 or u == 1) return 1;
- if (n == 1) return 0;
- if (n > 2) return res = f0(n-1, z, u-1) + f0(n-2, z, u-2);
- return res = f0(n-1, z, u-1) + f1(n-1, z-1, u);
- }
- int main(){
- while(cin >> z >> u){
- cout << (z+u == 0 ? 1 : (f0(z+u, z, u) + f1(z+u, z, u))) << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement