Cod sursa(job #2510598)

Utilizator victorv88Veltan Victor victorv88 Data 16 decembrie 2019 22:12:10
Problema Diamant Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 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;
    dp[0][MAX/2]=1;
    for (int i=1; i<=n; ++i)
    {
        for (int j=1; j<=m; ++j)
        {
            contor++;
            for (int t=0; t<=MAX; ++t)
            {
                if (t-i*j>=0)
                    dp[contor%2][t]+=dp[(contor+1)%2][t-i*j];
                if (t+i*j<=MAX)
                    dp[contor%2][t]+=dp[(contor+1)%2][t+i*j];
                dp[contor%2][t]+=dp[(contor+1)%2][t];
            }
        }
    }
    g << dp[contor%2][s_dorit+MAX/2];
}

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