Cod sursa(job #365451)

Utilizator klamathixMihai Calancea klamathix Data 18 noiembrie 2009 19:38:13
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<cstdio>
#define gap 45000
#define mod 10000

int i , j , k ;
int n , m , s;
int possible[2 * gap + 5];
int aux [2 * gap + 5];

void knapsack()
{
	aux[gap] = 1;
		
	for( i = 1 ; i <= n ; ++i )
		for( j = 1 ; j <= n ; ++j ) 
		{
			for ( k = -gap ; k <= gap ; ++k )
				possible[k + gap] = ( aux[k + gap] + aux[ k + i * j + gap] + aux [ k - i * j + gap] ) % mod;
			
			for( k = -gap ; k <= gap ; ++k )
				aux[k + gap] = possible [k + gap];
		}
}
	
int main()
{
	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);
	
	scanf("%d %d %d",&n,&m,&s);
	
	knapsack();
	
	if ( s > 44500 || s < -44500 ) printf("0\n");
	else printf( "%d\n" ,possible[s + gap] );
	
return 0;
}