#include <stdio.h>
int p(int *a, int size) {
int i;
for (i
= 0; i
< size
; i
++) printf("%s%d", 0 < i
? ", " : "", a
[i
]); }
void comb2_do(int *a, int size, void (*f)(), void *context) {
int i, j;
for (i = 0; i < size; i++)
for (j = i + 1; j < size; j++) f(a[i], a[j], context);
}
void _bc100(int b, int c, int *count) {
if (b
+ c
== 100) printf("%s[%d, %d]", 0 < (*count
)++ ? ", " : "", b
, c
); }
int f11236(int *a, int size) {
int count = 0;
p(a, size);
comb2_do(a, size, _bc100, &count);
}
int main() {
int a[] = {1, 99, 20};
int b[] = {62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40};
int c[] = {100, 0, 100, 0};
#define F11236(a) f11236(a, sizeof a / sizeof *a)
F11236(a);
F11236(b);
F11236(c);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBwKGludCAqYSwgaW50IHNpemUpIHsKICBpbnQgaTsKICBwdXRjaGFyKCdbJyk7CiAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgcHJpbnRmKCIlcyVkIiwgMCA8IGkgPyAiLCAiIDogIiIsIGFbaV0pOwogIHB1dGNoYXIoJ10nKTsKfQp2b2lkIGNvbWIyX2RvKGludCAqYSwgaW50IHNpemUsIHZvaWQgKCpmKSgpLCB2b2lkICpjb250ZXh0KSB7CiAgaW50IGksIGo7CiAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgc2l6ZTsgaisrKSBmKGFbaV0sIGFbal0sIGNvbnRleHQpOwp9CnZvaWQgX2JjMTAwKGludCBiLCBpbnQgYywgaW50ICpjb3VudCkgewogIGlmIChiICsgYyA9PSAxMDApIHByaW50ZigiJXNbJWQsICVkXSIsIDAgPCAoKmNvdW50KSsrID8gIiwgIiA6ICIiLCBiLCBjKTsKfQppbnQgZjExMjM2KGludCAqYSwgaW50IHNpemUpIHsKICBpbnQgY291bnQgPSAwOwogIHAoYSwgc2l6ZSk7CiAgcHJpbnRmKCJcbi0+IFsiKTsKICBjb21iMl9kbyhhLCBzaXplLCBfYmMxMDAsICZjb3VudCk7CiAgcHV0cygiXVxuIik7Cn0KaW50IG1haW4oKSB7CiAgaW50IGFbXSA9IHsxLCA5OSwgMjB9OwogIGludCBiW10gPSB7NjIsIDExNiwgMTgxLCA4NiwgNjAsIDk4LCAtMTYsIDczLCAxMzEsIDE2LCA4MCwgLTgxLCA0MH07CiAgaW50IGNbXSA9IHsxMDAsIDAsIDEwMCwgMH07CiNkZWZpbmUgRjExMjM2KGEpIGYxMTIzNihhLCBzaXplb2YgYSAvIHNpemVvZiAqYSkKICBGMTEyMzYoYSk7CiAgRjExMjM2KGIpOwogIEYxMTIzNihjKTsKICByZXR1cm4gMDsKfQo=
[1, 99, 20]
-> [[1, 99]]
[62, 116, 181, 86, 60, 98, -16, 73, 131, 16, 80, -81, 40]
-> [[116, -16], [181, -81], [60, 40]]
[100, 0, 100, 0]
-> [[100, 0], [100, 0], [0, 100], [100, 0]]