Cod sursa(job #2150446)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 3 martie 2018 16:03:51
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#define DIM 45000
#define MOD 10000
using namespace std;

ifstream fin ("diamant.in");
ofstream fout ("diamant.out");
int n,m,x,mini,maxi,i,j,k;
int v[2*DIM],w[2*DIM];
int *D = v + DIM;
int *E = w + DIM;
int main (){

    fin>>n>>m>>x;
    D[0] = 1;
    mini = maxi = 0;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++){
            /// copiem pe v in w

            for (k=mini;k<=maxi;k++)
                E[k] = D[k];

            for (k=mini;k<=maxi;k++)
                if (D[k] != 0){
                    E[k+i*j] += D[k];
                    E[k-i*j] += D[k];

                    if (E[k+i*j] >= MOD)
                        E[k+i*j] -= MOD;
                    if (E[k-i*j] >= MOD)
                        E[k-i*j] -= MOD;
                }
            /// copiem pe w in v
            mini -= i*j;
            maxi += i*j;
            for (k=mini;k<=maxi;k++)
                D[k] = E[k];
        }

    fout<<D[x];



    return 0;
}