Cod sursa(job #2299115)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 8 decembrie 2018 22:27:41
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <vector>
#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 ;
    
    vector < 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 ;
}