Cod sursa(job #1194522)

Utilizator WyvernFMI Stanescu Leonard Wyvern Data 3 iunie 2014 23:56:49
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.71 kb
# include <fstream>
using namespace std;
# define input "diamant.in"
# define output "diamant.out"
# define max 160001
long a[max],i,j,n,m,ld,ls,k;
long long x;
int main() {
    ifstream fin(input);
    ofstream fout(output);
    fin>>n>>m>>x;
    for(i=1;i<=m;i++)
        ld+=n*(n+1)*i/2;
    ld*=2;
    ls=ld;
    a[ls]=1;
    if(x>ld/2||x<-ld/2) {
            fout<<0;
            return 0;
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++) {
            for(k=ls;k<=ld;k++) {
                while(a[k]>=10000)a[k]-=10000;
                a[k-i*j]+=a[k];
                a[k-2*i*j]+=a[k];
            }
            ls=ls-2*i*j;
        }
    fout<<a[x+ld/2]%10000;
    return 0;
}