Cod sursa(job #2150950)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 3 martie 2018 21:59:39
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <cstring>
#define DIM 401*401
#define MOD 10000
using namespace std;

ifstream fin ("diamant.in");
ofstream fout ("diamant.out");
int n,m,x,mini,maxi,i,j,k,nr;
int v[2*DIM],w[2*DIM];
//int *D[2] = v + DIM-2;
//int *E[2] = w + DIM-2;
int main (){
    /// D-0, E-1
    fin>>n>>m>>x;
    //D[0][0] = 1;
    mini = maxi = 0;
    //t = 1;
    v[DIM] = w[DIM] = 1;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++){
            nr = i*j;
            maxi += nr;

            for (k=DIM-maxi;k<=DIM+maxi;k++){
                if (k + nr < 2*DIM)
                    w[k] = (v[k+nr] + w[k]) % MOD;
                if (k - nr >= 0)
                    w[k] = (v[k-nr] + w[k]) % MOD;

            }
            memcpy (v,w,sizeof(w));

        }
    if (x >= -maxi && x <= maxi)
        fout<<v[x + DIM];
    else
        fout<<0;

    return 0;
}