Cod sursa(job #2360719)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 2 martie 2019 09:16:43
Problema Diamant Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int N = 25;
const int K = 1e5;
const int MOD = 10000;
int dp[2][K];
int val(int x)
{
    if (x<0)
        return 45000-x;
    else
        return x;
}

int main()
{
    int n,m,x,s=0;
    in >> n >> m >> x;
    for (int i = 1; i<=n; i++)
        for (int j = 1; j<=m; j++)
            s+=i*j;
    if (x>s || x<-s)
        out << "0";
    else
    {
        bool t = 1;
        dp[0][0] = 1;
        for (int i = 1; i<=n; i++)
            for (int j = 1; j<=m; j++)
            {
                for (int k = -s; k<=s; k++)
                {
                    int z = val(k);
                    dp[t][z] = dp[!t][z];
                    if (k-i*j>=-s)
                        dp[t][z] = (dp[t][z]+dp[!t][val(k-i*j)])%MOD;
                    if (k+i*j<=s)
                        dp[t][z] = (dp[t][z]+dp[!t][val(k+i*j)])%MOD;
                }
                t = !t;
            }
        out << dp[!t][val(x)];
    }
}