#include <stdio.h>
#include <time.h>
#define MAX_N 1001
#define MAX_M 101
int memo[MAX_N][MAX_M];
int S(int n, int m) {
if (memo[n][m] != -1)
return memo[n][m];
if (n > m && m > 1)
return memo[n][m] = m * S(n - 1, m) + S(n - 1, m - 1);
else
return memo[n][m] = 1;
}
int main(void) {
int cases = 0;
while (cases--) {
int n = 0, m = 0;
// Initialize memoization table
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= m; ++j) {
memo[i][j] = -1;
}
}
printf( "%d time : %lf\n", S
( n
, m
) % 2 , (double)clock()/CLOCKS_PER_SEC
) ; }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx0aW1lLmg+CgojZGVmaW5lIE1BWF9OIDEwMDEKI2RlZmluZSBNQVhfTSAxMDEKCmludCBtZW1vW01BWF9OXVtNQVhfTV07CgppbnQgUyhpbnQgbiwgaW50IG0pIHsKICAgIGlmIChtZW1vW25dW21dICE9IC0xKQogICAgICAgIHJldHVybiBtZW1vW25dW21dOwogICAgCiAgICBpZiAobiA+IG0gJiYgbSA+IDEpCiAgICAgICAgcmV0dXJuIG1lbW9bbl1bbV0gPSBtICogUyhuIC0gMSwgbSkgKyBTKG4gLSAxLCBtIC0gMSk7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIG1lbW9bbl1bbV0gPSAxOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgY2FzZXMgPSAwOwoKICAgIHNjYW5mKCIlZCIsICZjYXNlcyk7CgogICAgd2hpbGUgKGNhc2VzLS0pIHsKICAgICAgICBpbnQgbiA9IDAsIG0gPSAwOwogICAgICAgIAogICAgICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmbSk7CiAgICAgICAgCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBtZW1vaXphdGlvbiB0YWJsZQogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47ICsraSkgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8PSBtOyArK2opIHsKICAgICAgICAgICAgICAgIG1lbW9baV1bal0gPSAtMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBwcmludGYoICIlZCB0aW1lIDogJWxmXG4iLCBTKCBuICwgbSApICUgMiAsIChkb3VibGUpY2xvY2soKS9DTE9DS1NfUEVSX1NFQyApIDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=