Cod sursa(job #2542700)

Utilizator Iulia_DianaIulia Diana Iulia_Diana Data 10 februarie 2020 14:48:59
Problema Diamant Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int v[40005], dp[3][88200];
int main()
{
    int n, m, i, j, c=44100, s=0, nr=0;
    int x;
    fin >> n >> m >> x;
    for(i=1; i<=n; i++)
       for(j=1; j<=m; j++)
       {
           nr++;
           v[nr]=i*j;
           s+=v[nr];
       }

    if(s<x) fout << 0;
    else
    {
       // c=9;
       for(i=-s; i<=s; i++)
           fout << i << " ";
       fout << "\n";

        for(i=1; i<=n*m; i++)
        {
            if(i%2==1)
            {
               dp[1][v[i]+c]++;
               dp[1][c]++;
               dp[1][c-v[i]]++;
                for(j=-s; j<=s; j++)
                   dp[1][j+c]+=dp[2][j+c]+dp[2][j+c-v[i]]+dp[2][j+c+v[i]];
               for(j=-s; j<=s; j++)
                   fout << dp[1][j+c] << " ";
               fout << "\n";
            }
            else
            {
                dp[2][v[i]+c]++;
                dp[2][c-v[i]]++;
                dp[2][c]++;
                for(j=-s; j<=s; j++)
                   dp[2][j+c]+=dp[1][j+c]+dp[1][j+c-v[i]]+dp[1][j+c+v[i]];

                 for(j=-s; j<=s; j++)
                   fout << dp[2][j+c] << " ";
               fout << "\n";
            }

        }
        if(n*m%2==0)   fout << dp[2][x+c];
        else fout <<dp[1][x+c];
    }

    return 0;
}