Pagini recente » Cod sursa (job #1237312) | Cod sursa (job #1583741) | Cod sursa (job #3258559) | Cod sursa (job #1936315) | Cod sursa (job #7293)
Cod sursa(job #7293)
#include <cstdio>
#include <string.h>
#define Nmax 16*4
#define Smax 16*16*2
#define sum(x) (x)+200
#define nr(x) (x)+16
int n, i, j, s, k, s1, s2, sol;
int d[Nmax][Nmax][Smax];
void citire()
{
scanf("%d %d\n", &n, &s);
}
void solve()
{
memset(d,0,sizeof(d));
d[1][nr(0)][sum(0)] = 1;
s1 = - (s2 = n*(n-1)/2);
//printf("%d %d\n", sum(s1), sum(s2));
//return;
for (i=2; i<=n; ++i)
for (j=-n+1; j<=n-1; ++j)
for (k=s1; k<=s2; ++k)
{
d[i][nr(j)][sum(k)] += d[i-1][nr(j-1)][sum(k-j)] + d[i-1][nr(j+1)][sum(k-j)];
//printf("%d %d %d - %d\n", i, j, k, d[i][nr(j)][sum(k)]);
}
for (i=-n+1; i<=n-1; ++i)
sol += d[n][nr(i)][sum(s)];
printf("%d",sol);
}
int main()
{
freopen("1-sir.in","r",stdin);
freopen("1-sir.out","w",stdout);
citire();
if ((n + 1)%4 == 0 && s % 2 == 0)
{
printf("0\n");
return 0;
}
else if (((n+1)%2 == 0) && ((n+1)%4 != 0) && s % 2 == 1)
{
printf("0\n");
return 0;
}
else if ((n%4 == 0) && s % 2 == 1)
{
printf("0\n");
return 0;
}
else if ((n%2 == 0) && (n%4!=0) && s % 2 == 0)
{
printf("0\n");
return 0;
}
solve();
return 0;
}