#include #include #include int N; int *W; int Sum = 0; int Possible = 0; int **DP = 0; void go(int w_no, int sum) { if (Possible == 0) { if (DP[w_no][sum] == 0) { if (w_no < N) { if ((sum + W[w_no]) == Sum/2) { Possible = 1; } else if ((sum + W[w_no]) < Sum/2) { go(w_no+1, sum + W[w_no]); go(w_no+1, sum); } else if (sum < Sum/2) { go(w_no+1, sum); } } DP[w_no][sum] = 1; } } return; } int main() { int i; scanf("%d", &N); W = (int*)malloc(sizeof(int)*N); for (i=0; i