Cod sursa(job #2966159)

Utilizator Luka77Anastase Luca George Luka77 Data 16 ianuarie 2023 19:56:07
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 fin("diamant.in");
ofstream fout("diamant.out");

const int NMAX = 405;
int n, m, x;
int calc[NMAX];

inline void solve()
{
    int itr = 1, sum = 0;
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++ j)
        {
            sum += i * j;
            calc[itr++] = i * j;
        }
    }
    itr--;
    sort(calc + 1, calc + itr + 1);
    int dp[itr+5][sum+5];
    memset(dp, 0, sizeof(dp));
    dp[0][0] = 1;
    for(int i = 1; i <= itr; ++ i)
    {
        dp[i][0] = 1;
        for(int j = sum; j >= 1; -- j)
        {
            dp[i][j] = dp[i-1][j] + dp[i-1][abs(calc[i] - j)];
        }
    }
    fout << dp[itr][x];
}

int main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);

    fin >> n >> m >> x;

    solve();
}