Cod sursa(job #896003)

Utilizator marius135Dumitran Adrian Marius marius135 Data 27 februarie 2013 13:24:56
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
#define maxn 44100
int nr[maxn * 2+ 10];
int nr2[maxn * 2 + 10];
int main(){

   // #ifdef Infoarena
    freopen("diamant.in","r", stdin);
    freopen("diamant.out", "w", stdout);
    //#endifdef Infoarena
    int n, m, x, sum = 0;

    cin>>n>>m>>x;
    nr[ maxn ] = 1;
    if( x > maxn ) {
        cout<< 0<<endl;
        return 0;
    }
    //cout<< nr[maxn]<<endl;
    for( int i = 1; i <= n; ++i)
        for( int j = 1; j <= m; ++j) {
            //cout<< j;
            for( int val = 0; val <= maxn * 2; ++val) {
              //  cout<< val << " ";
                if( nr[val] ) {
                    //cout<<val<<" ";
                    nr2[val] += nr[val];
                    nr2[val + i * j] += nr[val];
                    nr2[val - i * j] += nr[val];
                }
            }
            //cout<<nr[maxn];
            for( int val = 0; val <= maxn * 2; ++val) {
                nr[val] = nr2[val];
                nr2[val] = 0;
            }

        }

    cout<< nr[ maxn - x]<<endl;

    return 0;
}