Pagini recente » Cod sursa (job #1274045) | Istoria paginii runda/antrenamentoji-oni | Istoria paginii runda/oni_2015_zi1 | Cod sursa (job #2956321) | Cod sursa (job #1194518)
#include <stdio.h>
#define MAX 44100
#define MOD 10000
#define m(i, j) m[i][j + MAX]
int N, M, S, Sm;
int m[2][MAX + MAX + 2];
int main() {
freopen("diamant.in", "rt", stdin);
freopen("diamant.out", "wt", stdout);
scanf("%d %d %d", &N, &M, &S);
Sm = (N * (N + 1) >> 1) * (M * (M + 1) >> 1);
if (S < -Sm || S > Sm) {
printf("0\n");
return 0;
}
m(0, 0) = 1;
int step = 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= M; j++) {
step ^= 1;
for (int S = -Sm; S <= Sm; S++) {
m( step, S ) = m( 1 ^ step, S );
if (S - i * j >= -Sm) {
m( step, S ) += m( 1 ^ step, S - i * j );
if (m( step, S ) >= MOD)
m( step, S ) -= MOD;
}
if (S + i * j <= Sm) {
m( step, S ) += m( 1 ^ step, S + i * j );
if (m( step, S ) >= MOD)
m( step, S ) -= MOD;
}
}
}
printf("%d\n", m(step, S));
return 0;
}