Cod sursa(job #51660)
Utilizator | Andrei Homorodean peanutz | Data | 16 aprilie 2007 09:51:40 |
---|---|---|---|
Problema | Diamant | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.18 kb |
#include <stdio.h>
#include <memory.h>
#define SHIFT 2200000000
#define NMAX (SHIFT*2 + 100)
long a[NMAX], b[NMAX];
#define a (a + SHIFT)
#define b (b + SHIFT)
int n, m;
long x;
void dinamic()
{
long i, j, k;
a[0] = 1;
for(i = 1; i <= n; ++i)
{
for(j = 1; j <= m; ++j)
{
memcpy(b, a, sizeof(a));
for(k = -SHIFT; k <= SHIFT; ++k)
{
if(a[k])
{
++b[k];
++b[k - i*j];
++b[k + i*j];
}
}
for(k = -SHIFT; k <= SHIFT; ++k)
{
a[k] = b[k];
}
}
}
}
int main()
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %ld\n", &n, &m, &x);
dinamic();
printf("%ld\n", a[x]);
fclose(stdin);
fclose(stdout);
return 0;
}