Cod sursa(job #2666446)

Utilizator loraclorac lorac lorac Data 1 noiembrie 2020 21:22:07
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int mod=10000;
int dp[89000];
int add[89000];
int main()
{
    int n,m,obj;
    in>>n>>m>>obj;
    int lim=(n*(n+1)*m*(m+1))/4;
    if(obj<-lim or obj>lim)
    {
        out<<0<<'\n';
        return 0;
    }
    dp[lim]=1;
    int sum=0;
    for(int i=1;i<=n;++i)
    for(int j=1;j<=m;++j)
    {
        sum+=i*j;
        for(int k=sum+lim;k>=lim-sum;--k)
        {
            add[k]=0;
            if(k-i*j>=0)
                add[k]=dp[k-i*j];
            if(k+i*j<=2*lim)
                add[k]+=dp[k+i*j];
        }
        for(int k=sum+lim;k>=lim-sum;--k)
            dp[k]=(dp[k]+add[k])%mod;
    }
    out<<dp[obj+lim]<<'\n';
    return 0;
}