// 짝수 포함 수열의 개수 (재제출)
#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) {
if(m - odd_count < l) return 0;
if(toPick == 0) return 1;
int lastIndex = m - toPick - 1;
int lastPick = (toPick == m) ? 1 : bucket[lastIndex] + 1;
int count = 0;
for (int i = lastPick; i <= n; i++) {
bucket[lastIndex + 1] = i;
count += pick(n, bucket, m, toPick - 1, l, odd_count + i% 2);
}
return count;
}
Ly8g7Ked7IiYIO2PrO2VqCDsiJjsl7TsnZgg6rCc7IiYICjsnqzsoJzstpwpCgojZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgppbnQgcGljayhpbnQgbiwgaW50KiBidWNrZXQsIGludCBtLCBpbnQgdG9QaWNrLCBpbnQgbCwgaW50IG9kZF9jb3VudCk7CgppbnQgbWFpbih2b2lkKSB7CglpbnQgTiwgTSwgTDsKCXNjYW5mKCIlZCAlZCAlZCIsICZOLCAmTSwgJkwpOwoJaW50KiBidWNrZXQgPSAoaW50KiltYWxsb2Moc2l6ZW9mKGludCkgKiBNKTsKCglpbnQgcmVzdWx0ID0gcGljayhOLCBidWNrZXQsIE0sIE0sIEwsIDApOwoJcHJpbnRmKCIlZFxuIiwgcmVzdWx0KTsKCglmcmVlKGJ1Y2tldCk7CglyZXR1cm4gMDsKfQoKaW50IHBpY2soaW50IG4sIGludCogYnVja2V0LCBpbnQgbSwgaW50IHRvUGljaywgaW50IGwsIGludCBvZGRfY291bnQpIHsKCWlmKG0gLSBvZGRfY291bnQgPCBsKSByZXR1cm4gMDsKCWlmKHRvUGljayA9PSAwKSByZXR1cm4gMTsKCWludCBsYXN0SW5kZXggPSBtIC0gdG9QaWNrIC0gMTsKCWludCBsYXN0UGljayA9ICh0b1BpY2sgPT0gbSkgPyAxIDogYnVja2V0W2xhc3RJbmRleF0gKyAxOwoJaW50IGNvdW50ID0gMDsKCWZvciAoaW50IGkgPSBsYXN0UGljazsgaSA8PSBuOyBpKyspIHsKCQlidWNrZXRbbGFzdEluZGV4ICsgMV0gPSBpOwoJCWNvdW50ICs9IHBpY2sobiwgYnVja2V0LCBtLCB0b1BpY2sgLSAxLCBsLCBvZGRfY291bnQgKyBpJSAyKTsKCX0KCXJldHVybiBjb3VudDsKfQ==