#include int tab[20][70000]; int inSet[20]; int inFirstSet[20]; int sum,halfSum; int setSize; int i,j,k; #define FALSE 0 #define TRUE 1 main() { setSize=0; sum=0; printf("Enter size of set\n"); scanf("%d",&setSize); printf("Enter numbers, one per line\n"); for (i=1;i<=setSize;i++) { scanf("%d",&inSet[i]); inFirstSet[i]=FALSE; sum += inSet[i]; } halfSum = sum/2; if (2*halfSum!=sum) printf("WARNING - sum not even!!!\n"); sum = 0; for (i=1;i<=setSize;i++) { for (j=1;j setSize) printf("no solution\n"); else { sum=halfSum; while (tab[i][sum]!=i) { inFirstSet[i]=TRUE; j=tab[i][sum]; sum-=inSet[i]; i=j; } inFirstSet[i]=TRUE; printf("first set\n"); for (i=1;i<=setSize;i++) if (inFirstSet[i]) printf("%d\n",inSet[i]); printf("second set\n"); for (i=1;i<=setSize;i++) if (!inFirstSet[i]) printf("%d\n",inSet[i]); } }