Cod sursa(job #2137301)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 20 februarie 2018 18:39:41
Problema Diamant Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

const int mod = 10000;
const int clc = 44105;
int N, M, k, X;
int v[405];
int dr[2][clc];


int main()
{
    fin >> N >> M >> X;

    for(int i=1; i<=N; ++i)
        for(int j=1; j<=M; ++j)
        {
            v[++k] = i*j;
            dr[0][v[k]]++;
        }

    int x = N*(N+1)/2;
    int y = M*(M+1)/2;

    sort(v+1, v+N+1);

    int l = 1;
    for(int i=1; i<=N*M; ++i)
    {
        for(int j=x*y-v[i]; j>=v[i]; --j)
        {
            dr[l][j] += dr[1-l][j-v[i]]+dr[1-l][j+v[i]];
        }

        l=1-l;
    }

    fout << dr[1][X];
    return 0;
}