Cod sursa(job #48803)

Utilizator tm_raduToma Radu tm_radu Data 5 aprilie 2007 08:21:48
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>

int n, m, L;
int i, j, k;
int a[2][100001];
int l1, l2;

int main()
{
    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);
    scanf("%d %d %d", &n, &m, &L);
    a[0][50000] = 1;
    l1 = 0, l2 = 1;
    for ( i = 1; i <= n; i++ )
        for ( j = 1; j <= m; j++ )
        {
            for ( k = 0; k <= 100000; k++ ) a[l2][k] = 0;
            for ( k = 0; k <= 100000; k++ )
            {
                a[l2][k] += a[l1][k];
                if ( k-i*j >= 0 ) a[l2][k] += a[l1][k-i*j];
                if ( k+i*j <= 100000 ) a[l2][k] += a[l1][k+i*j];
            }
            l1 = !l1;
            l2 = !l2;
        }
    printf("%d\n", a[l1][L+50000]);
    return 0;
}