Pagini recente » Cod sursa (job #2563740) | Cod sursa (job #2181331) | Monitorul de evaluare | Istoria paginii pisicaslaba | Cod sursa (job #7725)
Cod sursa(job #7725)
#include <stdio.h>
#include <string.h>
#define OF 33000
#define MOD 194767
#define XMAX 70000
int N, S;
int ant[XMAX];
int cur[XMAX];
int main()
{
int i, s;
freopen("1-sir.in", "r", stdin);
freopen("1-sir.out", "w", stdout);
scanf("%d %d", &N, &S);
int smax = N * (N - 1) / 2;
if (S > smax || S < -smax) {
printf("0\n");
return 0;
}
ant[smax + OF] = cur[smax + OF] = 1;
ant[smax + OF - 2] = cur[smax + OF - 2] = 1;
for (i = N - 2; i > 0; i--) {
for (s = -smax; s <= smax; s++) {
cur[s + OF] += (s + OF + 2 * (N - i) < XMAX) ? ant[s + OF + 2 * (N - i)] : 0;
if (cur[s + OF] >= MOD) s[cur + OF] -= MOD;
}
memcpy(ant, cur, sizeof(cur));
}
// for (s = -smax; s <= smax; s++) printf("%d %d\n", s, cur[s + OF]);
printf("%d\n", cur[S + OF]);
fclose(stdin);
fclose(stdout);
return 0;
}