Cod sursa(job #1559362)

Utilizator elevenstrArina Raileanu elevenstr Data 30 decembrie 2015 17:24:52
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
//http://www.infoarena.ro/problema/diamant
#define MAX 45108
#define MOD 10000
int dp[2*MAX],aux[2*MAX];
int main()
{   long n,m,x;
    in>>n>>m>>x;
    int maxi=((n+1)*n)/2;
    maxi=maxi*((m+1)*m)/2;
    if(abs(x)>maxi){out<<0;return 0;}
    int zero=MAX-1008;
    x=x+zero;
    dp[zero]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
    {   for(int k=0;k<=maxi+zero;k++)
         aux[k]=dp[k];

        for(int k=0;k<=maxi+zero;k++)
        {
            dp[k]=(aux[k]+aux[k-i*j]+aux[k+i*j])%MOD;
            //
        }
    }

    out<<dp[x];

    return 0;
}