Cod sursa(job #1278794)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 29 noiembrie 2014 14:21:25
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<bits/stdc++.h>
using namespace std;

ifstream fin("diamant.in");
ofstream fout("diamant.out");

const int MODULO=10000;
const int NMAX=25;
const int XMAX=50000;
const int XMAXX=100000;

int n,m,x,dp1[XMAXX],dp2[XMAXX];
bitset<XMAXX>viz;

int main()
{
    int i,j,l,aux;
    fin>>n>>m>>x;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            {
                if (i==1 && j==1) {dp1[XMAX]=viz[XMAX]=dp1[XMAX-1]=viz[XMAX-1]=dp1[XMAX+1]=viz[XMAX+1]=1;continue;}
                aux=i*j;
                for (l=aux;l<(XMAXX-aux);l++)
                    if (viz[l]!=0)
                        {
                            dp2[l+aux]+=dp1[l];
                            viz[l+aux]=1;
                            dp2[l]+=dp1[l];
                            dp2[l-aux]+=dp1[l];
                            viz[l-aux]=1;
                        }
                for (l=0;l<XMAXX;l++) {dp1[l]=dp2[l]%MODULO;dp2[l]=0;}
            }
    x+=XMAX;
    if (x>=0 && x<XMAXX)
    fout<<dp1[x]<<"\n";
    return 0;
}