Cod sursa(job #2684874)

Utilizator Andrei012Trache Andrei Andrei012 Data 15 decembrie 2020 02:13:08
Problema Diamant Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

#define mod 10000

int dp1[100001],dp2[100001];
int v[50001];
int main()
{
    ifstream cin("diamant.in");
    ofstream cout("diamant.out");

    int n,m,i,j,nr,x,sum=0,ans;
    cin>>n>>m>>x;
    x=abs(x);
    nr=0;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j){
            v[++nr]=i*j;
            sum+=v[nr];
        }
    if(x>sum)
    {
        cout<<0;
        return 0;
    }
    dp1[sum]=1;
    for(i=1;i<=nr;++i){
        for(j=0;j<=2*sum;++j)
            dp2[j]=dp1[j];
        for(j=0;j<=2*sum;++j){
            if(j-v[i]>=0)
                dp1[j]+=dp2[j-v[i]];
            if(j+v[i]<=2*sum)
                dp1[j]+=dp2[j+v[i]];
            dp1[j]%=mod;
        }
    }
    cout<<dp1[x+sum];
    return 0;
}