/* ID: mytbk921 LANG: C TASK: subset */ #include #include int main() { FILE *fin = fopen("subset.in", "r"); FILE *fout = fopen("subset.out", "w"); long long dp[40][500]; int N, sum; int i, j; fscanf(fin, "%d", &N); fclose(fin); sum = N*(N+1)/2; if (sum%2) { fprintf(fout, "0\n"); fclose(fout); return 0; } sum /= 2; /* dp[x][y]: number of sets that sum of set is y * with all numbers in the set <=x * * dp[k][0] = 1 * dp[0][k] = 0 for k>0 */ for (i=0; i<=N; i++) dp[i][0] = 1; for (i=1; i<=sum; i++) dp[0][i] = 0; for (i=1; i<=N; i++) { for (j=1; j<=sum; j++) { if (j