Cod sursa(job #2366349)

Utilizator DumitresculEDumitrescul Eduard DumitresculE Data 4 martie 2019 19:41:34
Problema Diamant Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

#define MOD 10000

using namespace std;

ifstream fin ( "diamant.in" );
ofstream fout ( "diamant.out" );

long long DP [2][500005];

int main()
{
    int n, m, X, i, j, vmax=0;

    fin >> n >> m >> X;

    for( i = 1; i <= n; i ++ ){
        for ( j = 1; j <= m; j ++ )
            vmax += i * j;
    }

    if( vmax < X ){
        fout << 0;
        return 0;
    }

    X = abs (X);

    int k , alt = 0;

    DP [1] [0] = 1;
    for( i = 1; i <= n; i ++){
        for( j = 1; j <= m; j ++, alt ^= 1){
            for( k = 0; k <= X; k ++ ){
                DP [alt] [k] = ( DP [alt ^ 1] [abs( k - i * j )] + DP [alt ^ 1] [k] + DP [alt ^ 1] [k + i * j] ) % MOD;
            }
        }
    }

    fout << DP [alt^1] [X] << "\n";

    return 0;
}