Cod sursa(job #2098217)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 2 ianuarie 2018 16:09:10
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#define mod 10000
using namespace std;
fstream f1("diamant.in", ios::in);
fstream f2("diamant.out", ios::out);
int n, m, x, dp[2][88205];
int fct(int x)
{
    if(x>0) return x;
    else return -x;
}
int t=44100;
int main()
{
    int poz, i, j, val;
    f1>>n>>m>>x;
    if(fct(x)> (n*(n+1)/2)*(m*(m+1)/2)) f2<<0;
    else
    {
        dp[0][t+1]=dp[0][t-1]=dp[0][t]=1;
        for(poz=1; poz<n*m; poz++)
        {
            i= 1+ poz/m;
            j= 1+ poz%m;

            for(val=0; val<=88200; val++)
            {
                dp[poz%2][val]= dp[1-poz%2][val];

                if(val-i*j >=0) dp[poz%2][val]+= dp[1-poz%2][val-i*j];
                dp[poz%2][val]%=mod;

                if(val+i*j <=88200)  dp[poz%2][val]+= dp[1-poz%2][val+i*j];
                dp[poz%2][val]%=mod;
            }
        }
        f2<<dp[(n*m-1+2)%2][t+x];
    }
    return 0;
}