Cod sursa(job #2671194)

Utilizator alexdumitrescuDumitrescu George Alex alexdumitrescu Data 11 noiembrie 2020 17:38:55
Problema Diamant Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
#define xmax 44100
#define mod 10000

using namespace std;
ifstream fin ("diamant.in");
ofstream fout ("diamant.out");

int n, m, x, dp[2][2*xmax+5];
vector <int> v;

int main()
{
    fin >> n >> m >> x;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            v.push_back(i*j);

    dp[1][xmax]=1;

    for(int i=0;i<v.size();i++)
    {
        for(int j=0;j<=2*xmax;j++)
            dp[i%2][j]=dp[(i+1)%2][j];

        for(int j=v[i];j<=2*xmax;j++)
            dp[i%2][j-v[i]]=(dp[i%2][j-v[i]]+dp[(i+1)%2][j])%mod;

        for(int j=0;j<=2*xmax-v[i];j++)
            dp[i%2][j+v[i]]=(dp[i%2][j+v[i]]+dp[(i+1)%2][j])%mod;
    }

    fout << dp[(v.size()-1)%2][x+xmax];
    return 0;
}