Pagini recente » Cod sursa (job #618183) | Cod sursa (job #6807) | Cod sursa (job #2758347) | Cod sursa (job #265836) | Cod sursa (job #6858)
Cod sursa(job #6858)
#include <stdio.h>
#include <string.h>
#define MAX_S 1<<16
#define FIN "1-sir.in"
#define FOUT "1-sir.out"
#define MOD 194767
int N, S, A[MAX_S], B[MAX_S];
int main(void)
{
int i, j, bound;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &N, &S);
bound = N*(N-1)/2;
if (S < -bound || S > bound) { printf("0\n"); return 0; }
A[bound] = 1;
for (i = 1; i < N; i++)
{
for (j = S+bound; j >= i; j--)
{
B[j] += A[j-i];
if (B[j] >= MOD) B[j] -= MOD;
}
for (j = 0; j+i <= 2*bound; j++)
{
B[j] += A[j+i];
if (B[j] >= MOD) B[j] -= MOD;
}
memcpy(A, B, sizeof(B));
memset(B, 0, sizeof(B));
}
printf("%d\n", A[S+bound]);
return 0;
}