Cod sursa(job #718050)

Utilizator Sm3USmeu Rares Sm3U Data 20 martie 2012 14:25:55
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <algorithm>
#define mod 10000
#define lmax 45600

using namespace std;

int inceput;
int sfarsit;
int n;
int m;
int calitate;
int a[lmax * 2];
int b[lmax * 2];
#define a (a+lmax)
#define b (b+lmax)


void citire()
{
    scanf ("%d %d %d", &n, &m, &calitate);
    if (calitate > lmax || calitate < - lmax){
        printf ("0\n");
        exit(0);
    }
    for (int i = 1; i <= n; ++ i){
        for (int j = 1; j <= m; ++ j){
            sfarsit += i * j;
        }
    }
    inceput += 400;
    inceput = sfarsit * (- 1);
}

void rez()
{
    b[0] = 1;
    for (int i = 1; i <= n; ++ i){
        for (int j = 1; j <= m; ++ j){
            for (int k = sfarsit; k >= inceput; -- k){
                a[k] = b[k] + b[k - i * j] + b[k + i * j];
            }
            for (int k = inceput; k <= sfarsit; ++ k){
                b[k] = a[k] % mod;
            }
        }
    }
    printf ("%d", a[calitate] % mod);

}

int main()
{
    freopen ("diamant.in", "r", stdin);
    freopen ("diamant.out", "w", stdout);
    citire();
    rez();

    return 0;
}