Cod sursa(job #1683778)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 10 aprilie 2016 16:13:07
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define MOD 10000
#define SMAX 45000
#define DIM 90000
using namespace std;

int v[DIM];
int a[DIM];

#define v (v+SMAX)
#define a (a+SMAX)


int main()
{

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

    int n, m, y, i, j, s, t, d, k, x;

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

    if( x >= SMAX || x <= -SMAX ){
        printf("0");
        return 0;
    }

    v[0] = a[0] = 1;
    for( i = 1; i <= n; ++i ){
        for( j = 1; j <= m; ++j ){
            int k = i * j;
            for( y = -SMAX; y < SMAX; ++y ){
                if( v[y] ){
                    a[y-k] = ( v[y] + a[y-k] ) % MOD;
                    a[y+k] = ( v[y] + a[y+k] ) % MOD;
                }
            }
            for( y = -SMAX; y < SMAX; ++y ) v[y] = a[y];
        }
    }

    printf("%d",v[x]);


    return 0;
}