Cod sursa(job #2077175)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 27 noiembrie 2017 19:42:15
Problema Diamant Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define M 10000

using namespace std;

const int offset = 50000;
int n, m, t, v[2][100000];
bool ok[100000];

int main()
{
    ifstream fin ("diamant.in");
    ofstream fout ("diamant.out");
    fin >> n >> m >> t;
    v[1][0+offset] = 1;
    bool now = 0;
    for (int i1 = 1; i1 <= n; ++i1)
        for (int j1 = 1; j1 <= m; ++j1){
            memset(v[now], 0, sizeof(v[now]));
            int x = i1*j1;
            for (int i = -44100; i <= 44100; ++i){
                v[now][i+offset] = (v[now][i+offset] + v[1-now][i+offset])%M;
                v[now][i+x+offset] = (v[now][i+x+offset] + v[1-now][i+offset])%M;
                v[now][i-x+offset] = (v[now][i-x+offset] + v[1-now][i+offset])%M;
            }
            now = 1-now;
        }
    if(t <= 44100)
        fout << v[1-now][t+offset] << "\n";
    else fout << "0\n";
    fin.close();
    fout.close();
    return 0;
}