Cod sursa(job #2298909)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 8 decembrie 2018 16:56:43
Problema Diamant Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#define MOD 10000 

using namespace std ;

ifstream f ("diamant.in") ;
ofstream g ("diamant.out") ;

int v [ 44105 ] ;

int main ()
{
    long long s = 0 , l ;
    
    int n , m ; f >> n >> m >> l ;
     
    
    if ( l < 0 )    l *= -1 ;
    
    v [ 0 ] = 1 ;
    
    for ( int i = 1 ; i <= n ; ++ i )
    for ( int j = 1 ; j <= i ; ++ j )
    if ( i != j )   s += 2 * i * j ;
    else            s += i * j ;
    
    
    if ( l > s )    { g << 0 ; return 0 ; }
    if ( s == l )   { g << 1 ; return 0 ; }
    
    s -= l ;
    
    for ( int i = 1 ; i <= n ; ++ i )
    for ( int j = 1 ; j <= n ; ++ j )
    
    for ( int k = l ; k >= i * j ; -- k )
    {
        
        v [ k ] += v [ k - i * j ] ;
        if ( k >= 2 * i * j )   v [ k ] += v [ k - 2 * i * j ] ;
        v [ k ] %= MOD ;
    }
    
    g << v [ s ] << "\n" ;
    
    return 0 ;
}