Cod sursa(job #2510608)

Utilizator victorv88Veltan Victor victorv88 Data 16 decembrie 2019 22:30:53
Problema Diamant Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("diamant.in");
ofstream g("diamant.out");

const int MAX = 2*44100;
const int MOD = 10000;

int n, m, s_dorit, s;
int dp[2][2*44105];
void solve()
{
    int contor=0, vechi, x;
    dp[0][MAX/2]=1;
    for (int i=1; i<=n; ++i)
    {
        for (int j=1; j<=m; ++j)
        {
            contor++;
            vechi=(contor+1)%2;
            x=i*j;
            contor%=2;
            for (int t=0; t<=MAX; ++t)
            {
                dp[contor][t]=0;
                if (t-x>=0)
                    dp[contor][t]+=dp[vechi][t-x];
                if (t+x<=MAX)
                    dp[contor][t]+=dp[vechi][t+x];
                dp[contor][t]+=dp[vechi][t];
                dp[contor][t]%=MOD;
            }
        }
    }
    g << dp[contor][s_dorit+MAX/2];
}

int main()
{
    f >> n >> m >> s_dorit;
    if (s_dorit>MAX/2 || s_dorit<-1*MAX/2)
        g << 0;
    else
        solve();
    return 0;
}