Cod sursa(job #718039)

Utilizator Sm3USmeu Rares Sm3U Data 20 martie 2012 14:15:29
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#define lmax 44600

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);
    for (int i = 1; i <= n; ++ i){
        for (int j = 1; j <= m; ++ j){
            sfarsit += i * j;
        }
    }
    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 = inceput; k <= sfarsit; ++ k){
                a[k] = b[k] + b[k - i * j] + b[k + i * j];
            }
            for (int k = inceput; k <= sfarsit; ++ k){
                b[k] = a[k];
            }
        }
    }
    printf ("%d", a[calitate]);

}

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

    return 0;
}