// 짝수 포함 수열의 개수 (재제출)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int pick(int n, int* bucket, int m, int toPick, int l, int odd_count);
int main(void) {
int N, M, L;
scanf("%d %d %d", &N
, &M
, &L
); int* bucket
= (int*)malloc(sizeof(int) * M
);
int result = pick(N, bucket, M, M, L, 0);
return 0;
}
int pick(int n, int* bucket, int m, int toPick, int l, int odd_count) {
int count = 0;
if (toPick == 0) {
for (int i = 0; i < m; i++)
return 1;
}
int lastIndex = m - toPick - 1;
int lastPick = (toPick == m ? 1 : bucket[lastIndex] + 1);
for (int i = lastPick; i <= n; i++) {
int new_odd = odd_count + (i % 2);
if (new_odd > m - l)
continue;
bucket[lastIndex + 1] = i;
count += pick(n, bucket, m, toPick - 1, l, new_odd);
}
return count;
}
Ly8g7Ked7IiYIO2PrO2VqCDsiJjsl7TsnZgg6rCc7IiYICjsnqzsoJzstpwpCgojZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgppbnQgcGljayhpbnQgbiwgaW50KiBidWNrZXQsIGludCBtLCBpbnQgdG9QaWNrLCBpbnQgbCwgaW50IG9kZF9jb3VudCk7CgppbnQgbWFpbih2b2lkKSB7CglpbnQgTiwgTSwgTDsKCXNjYW5mKCIlZCAlZCAlZCIsICZOLCAmTSwgJkwpOwoJaW50KiBidWNrZXQgPSAoaW50KiltYWxsb2Moc2l6ZW9mKGludCkgKiBNKTsKCglpbnQgcmVzdWx0ID0gcGljayhOLCBidWNrZXQsIE0sIE0sIEwsIDApOwoJcHJpbnRmKCIlZFxuIiwgcmVzdWx0KTsKCglmcmVlKGJ1Y2tldCk7CglyZXR1cm4gMDsKfQoKaW50IHBpY2soaW50IG4sIGludCogYnVja2V0LCBpbnQgbSwgaW50IHRvUGljaywgaW50IGwsIGludCBvZGRfY291bnQpIHsKCWludCBjb3VudCA9IDA7CgoJaWYgKHRvUGljayA9PSAwKSB7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspCgkJCXByaW50ZigiJWQgIiwgYnVja2V0W2ldKTsKCQlwcmludGYoIlxuIik7CgkJcmV0dXJuIDE7Cgl9CgoJaW50IGxhc3RJbmRleCA9IG0gLSB0b1BpY2sgLSAxOwoJaW50IGxhc3RQaWNrID0gKHRvUGljayA9PSBtID8gMSA6IGJ1Y2tldFtsYXN0SW5kZXhdICsgMSk7CgoJZm9yIChpbnQgaSA9IGxhc3RQaWNrOyBpIDw9IG47IGkrKykgewoJCWludCBuZXdfb2RkID0gb2RkX2NvdW50ICsgKGkgJSAyKTsKCQlpZiAobmV3X29kZCA+IG0gLSBsKQoJCQljb250aW51ZTsKCQlidWNrZXRbbGFzdEluZGV4ICsgMV0gPSBpOwoJCWNvdW50ICs9IHBpY2sobiwgYnVja2V0LCBtLCB0b1BpY2sgLSAxLCBsLCBuZXdfb2RkKTsKCX0KCglyZXR1cm4gY291bnQ7Cn0=