Cod sursa(job #2187418)

Utilizator dragosmdvMoldovan Dragos dragosmdv Data 26 martie 2018 15:13:41
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>

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

int n, m, s, N, num, st[500];

int valid(int k)
{
      return 1;
}

int solutie(int k)
{
    return (N==k);
}

void tipar(int k)
{
    long long sum=0;
    for(int i=1;i<=k;i++)
    {
        if(st[i]!=0)
        {
            long long I=i/m;
            if(i%m!=0)
                I++;
            long long J=i%m;
            if(J==0)
                J=m;
            if(st[i]==-1)
                sum-=I*J;
            else
            if(st[i]==1)
                sum+=I*J;
        }
    }
        if(sum==s){
//    for(int i=1;i<=k;i++)
//        cout<<st[i]<<" ";
//    cout<<endl;
            num++;
            num%=10000;
        }
}

void bk(int k)
{
    for(int i=-1;i<=1;i++)
    {
        st[k]=i;
        if(valid(k))
            if(solutie(k))
                tipar(k);
        else
            bk(k+1);
    }

}

int main()
{
    fin>>n>>m>>s;
    N=n*m;
    bk(1);
    fout<<num;

       return 0;
}