Cod sursa(job #458392)
Utilizator | Data | 24 mai 2010 20:01:36 | |
---|---|---|---|
Problema | Diamant | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <cstdio>
#include <cstring>
#define off 44100
#define mod 10000
using namespace std;
int A[2 * off + 10], B[2 * off + 10], qq, i, j, n, m, k;
int main () {
freopen ("diamant.in", "r", stdin);
freopen ("diamant.out", "w", stdout);
scanf ("%d%d%d\n", &n, &m, &k);
if (k > off || k < -off) {
printf ("0\n"); return 0;
}
A[off] = 1;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++) {
for (qq = -off; qq <= off; qq++)
B[qq + off] = (A[qq + off] + A[qq + i * j + off] + A[qq - i * j + off]) % mod;
for (qq = -off; qq <= off; qq++)
A[qq + off] = B[qq + off];
}
printf ("%d\n", A[off + k]);
}