Cod sursa(job #42796)

Utilizator tm_raduToma Radu tm_radu Data 29 martie 2007 15:29:36
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>

int n, m, x;
long long int s[100002], i, j, k;
int u[100002], t;

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