Cod sursa(job #2692439)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 2 ianuarie 2021 18:00:58
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
#define MOD 10000
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int dp[100100], aux[100100];
int n, m, minim,maxim,minim2,maxim2, x;
int main()
{
    fin >> n >> m >> x;
    maxim = minim = maxim2 = minim2 = 44100;
    dp[44100] = 1;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
        {
            for (int k = maxim2; k >= minim2; k--)
                if (dp[k])
                {
                    aux[k + i * j] += dp[k];
                    maxim = max(maxim, k + i * j);
                    aux[k - i * j] += dp[k];
                    minim = min(minim, k - i * j);
                }
            for (int k = minim; k <= maxim; ++k)
            {
                dp[k] += aux[k];
                aux[k] = 0;
                dp[k] %= MOD;
            }
            minim2 = minim, maxim2 = maxim;
        }
    if(x > 44100 || x < -44100)
        fout << 0 << '\n';
    else
        fout << dp[44100 + x];
    return 0;
}