Cod sursa(job #1886457)

Utilizator adystar00Bunea Andrei adystar00 Data 20 februarie 2017 21:41:15
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
int NMAX;
int a[100000],b[100000];
int main()
{
    ifstream fin ("diamant.in");
    ofstream fout ("diamant.out");
    int n,m,k,i,j,q,ans=0,x;
    fin>>n>>m>>k;
    NMAX=n*(n+1)*m*(m+1)/4;
    if((k>=0&&NMAX<k)||(NMAX+k<0))
    {
        fout<<"0";
        return 0;
    }
    if(NMAX==k)
    {
        fout<<"1";
        return 0;
    }
    else
    {
        a[44100]=1;
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++)
            {
                for(q=88200; q>=0; q--)
                    b[q]=a[q];
                for(q=88200; q>=0; q--)
                {
                    if(q+i*j<=88200)
                        a[q]+=b[q+i*j];
                    if(q-i*j>=0)
                        a[q]+=b[q-i*j];
                }
            }
        fout<<a[k+44100];
    }
    return 0;
}