Cod sursa(job #2543168)

Utilizator Iulia_DianaIulia Diana Iulia_Diana Data 10 februarie 2020 21:55:33
Problema Diamant Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int v[44105], dp[3][88300];
int main()
{
    int n, m, i, j, c=45100, 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 || -s>x) fout << 0;
    else
    {
       // c=9;
        for(i=1; i<=n*m; i++)
        {
            if(i%2==1)
            {

                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]];
                    dp[1][j+c]=dp[1][j+c]%10000;
                }

               dp[1][v[i]+c]++;
           //    dp[1][c]++;
               dp[1][c-v[i]]++;
            }
            else
            {

                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]];
                    dp[2][j+c]=dp[2][j+c]% 10000;
                }

                dp[2][v[i]+c]++;
                dp[2][c-v[i]]++;
              //  dp[2][c]++;

            }

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

    return 0;
}