Cod sursa(job #2543187)

Utilizator Iulia_DianaIulia Diana Iulia_Diana Data 10 februarie 2020 22:09:09
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int v[44105], dp[3][90300];
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]])%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]])%10000;

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

            }

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

    return 0;
}