Cod sursa(job #2452477)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 30 august 2019 20:51:02
Problema Diamant Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
#define MOD 10000;
#define offset 44100
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int n, m, x, v[402], z, dp[402][offset + offset + 2], s;
int main()
{
    fin >> n >> m >> x;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            v[++z] = i * j, s += v[z];
    if (x > offset || x < -offset)
    {
        fout << 0;
        return 0;
    }
    dp[z + 1][x + offset] = 1;
    for (int index = z; index >= 1; --index)
    {
        for (int sum = s; sum >= -s; --sum)
        {
            dp[index][sum + offset] = dp[index + 1][sum + offset];
            if (sum + v[index] <= offset)
                dp[index][sum + offset] += dp[index + 1][sum + v[index] + offset];
            if (sum - v[index] >= -offset)
                dp[index][sum + offset] += dp[index + 1][sum - v[index] + offset];
            dp[index][sum + offset] %= MOD;
        }
    }
    fout << dp[1][offset];
    return 0;
}