Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Author: Md. Fahim Mohiuddin
- AUST CSE 32 Batch
- Problem: CodeForces - 118D - Caesar's Legions
- */
- //{ ---------- C headers
- # include <cstdio>
- # include <cstring>
- # include <cmath>
- # include <cstdlib>
- # include <cctype>
- //}
- //{ ---------- C++ headers
- # include <iostream>
- # include <string>
- # include <algorithm>
- # include <vector>
- # include <queue>
- # include <stack>
- # include <map>
- # include <sstream>
- # include <set>
- //}
- using namespace std;
- //{ ---------- Movements
- /*int dx[]={1,-1,0,0}, dy[]={0,0,1,-1};*/ // 4 way movement
- /*int dx[]={1,0,-1,0,1,-1,1,-1}, dy[]={0,1,0,-1,1,1,-1,-1};*/ // 8 way movement
- //}
- long long n[2], k[2];
- long long dp[2][101][101];
- long long call( long long clr, long long a, long long b ) {
- if( a+b == n[0]+n[1] ) return 1;
- if( dp[clr][a][b] != -1 ) return dp[clr][a][b];
- long long way=0;
- long long lim = min( k[clr], n[clr]-( !clr? a:b ) );
- for( long long i=1; i<=lim; i++ ) {
- way += !clr? call( 1-clr, a+i, b ): call( 1-clr, a, b+i );
- way %= 100000000;
- }
- return dp[clr][a][b] = way;
- }
- int main() {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- cin >> n[0] >> n[1] >> k[0] >> k[1];
- memset( dp, -1, sizeof dp );
- cout << (call(0,0,0) + call(1,0,0))%100000000 << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement