Cod sursa(job #928339)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 26 martie 2013 13:30:44
Problema Diamant Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#define C 50000
#define MOD 10000


using namespace std;

ifstream in("diamant.in");
ofstream out("diamant.out");

short a[111111],b[111111];

void adauga(short val)
{
    int i;
    for(i=val;i<=2*C;++i)
    {
        b[i]+=a[i-val];
    }
    for(i=0;i<=2*C-val;++i)
    {
        b[i]+=a[i+val];
        if(b[i]>=MOD)
            b[i]-=MOD
    }
    for(i=0;i<=2*C;++i)
    {
        b[i]+=a[i];
        if(b[i]>=MOD)
            b[i]-=MOD
    }
    for(i=0;i<=2*C;++i)
    {
        a[i]=b[i];
        b[i]=0;
    }
}

int main()
{
    int w;
    short m,n,i,j;
    in>>m>>n>>w;
    if(w>44100 || w<-44100)
    {
        out<<"0\n";
        return 0;
    }
    a[C]=1;
    for(i=1;i<=m;++i)
        for(j=1;j<=n;++j)
        {
            adauga(i*j);
        }
    out<<a[C+w]<<"\n";
    return 0;
}