Cod sursa(job #1613690)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 25 februarie 2016 16:15:52
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <fstream>
#include <vector>
#define MOD 10000
using namespace std;

ifstream is("diamant.in");
ofstream os("diamant.out");

using VI = vector<int>;
using VVI = vector<VI>;

int n, m, s, lim;

int main()
{
    is >> n >> m >> s;
    lim = n * ( n + 1 ) * m * ( m + 1 ) / 4;
    if ( lim < s )
        os << "0";
    else
        if ( lim == s )
            os << "1";
        else
        {
           /* VVI k(2, VI(2 * lim + 2));
            VI a(n * m + 1);
            int lc = 1, lp = 0;
            s += lim;
            k[0][lim] = 1;
            for ( int i = 1, cnt = 1; i <= n; ++i )
                for ( int j = 1; j <= m; ++j, ++cnt )
                    a[cnt] = i * j;
            n = n * m;
            for ( int i = 1; i <= n; ++i, lc = !lc, lp = !lp )
            {
                k[lc] = k[lp];
                for ( int q = 0; q <= 2 * lim; ++q )
                {
                    if ( k[lp][q] )
                    {
                        if ( q - a[i] >= 0 )
                            k[lc][q - a[i]] = ( k[lc][q - a[i]] + k[lp][q] ) % MOD + MOD;
                        if ( q + a[i] <= 2 * lim )
                            k[lc][q + a[i]] = ( k[lc][q + a[i]] + k[lp][q] ) % MOD + MOD;
                    }
                }
            }
            os << k[lp][s] % MOD << "\n";*/
        }
    is.close();
    os.close();
    return 0;
}