Cod sursa(job #2965861)

Utilizator Luka77Anastase Luca George Luka77 Data 16 ianuarie 2023 13:38:28
Problema Diamant Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 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][sum];
    memset(dp, 0, sizeof(dp));
    for(int i = 1; i <= itr; ++ i)
    {
        dp[i][0] = 1;
        for(int j = sum; j >= 1; -- j)
        {
            if(abs(calc[itr] - j))
            {
                dp[i][j] = dp[i-1][j] + dp[i-1][abs(calc[i] - j)];
            }
        }
    }
    for(int i = 1; i <= itr; ++ i)
    {
        for(int j = 1; j <= sum; ++ j)
        {
            fout << dp[i][j] << ' '; 
        }
        fout << '\n';
    }
}

int main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);
    
    fin >> n >> m >> x;
    
    solve();
}