Cod sursa(job #2299112)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 8 decembrie 2018 22:26:03
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 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 <= m ; ++ j )   s += i * j ;
    
    
    if ( l > s )    { g << 0 ; return 0 ; }
    if ( s == l )   { g << 1 ; return 0 ; }
    
    s -= l ;
    
    int v [ s + 3 ] = { 0 } ;   
    v [ 0 ] = 1 ;
    
    for ( int i = 1 ; i <= n ; ++ i )
    for ( int j = 1 ; j <= m ; ++ j )
    
    for ( int k = s ; 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 ;
}