Cod sursa(job #1090656)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 22 ianuarie 2014 21:59:24
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<stdlib.h>
#define NMAX 200007
#define mod 10000
#define med 50000

using namespace std;

int n,m,x,sum,a[NMAX],b[NMAX];

int main()
{
    int n,m,i,j,x,val,k;

    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);

    scanf("%d %d %d",&n,&m,&x);

    for (i=1;i<=n;++i)
        for(j=1;j<=m;++j)
            sum+=i*j;
    a[med]=1;

    if (x>sum)
    {
        printf("0");
        return 0;
    }

    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
        {
            val=i*j;
            for(k=-abs(sum);k<=abs(sum);++k)
                b[med+k]=(a[med+k]+a[med+k-val]+a[med+k+val])%mod;
            for(k=-abs(sum);k<=abs(sum);++k)
                a[med+k]=b[med+k];
        }

        printf("%d",a[med+x]);
    return 0;
}