Cod sursa(job #1254220)

Utilizator BLz0rDospra Cristian BLz0r Data 2 noiembrie 2014 12:35:53
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.75 kb
#include <cstdio>
#include <cstring>
using namespace std;

#define mod 10000
#define sum 45000
 
FILE *f=fopen ("diamant.in","r");
FILE *g=fopen ("diamant.out","w");

int L1[2*sum],L2[2*sum];
 
int main(){
    int n,m,x,val,s=0;
   
    fscanf(f,"%d%d%d",&n,&m,&x);
    
	for (int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            s+=i*j;
		}
	}
    L1[sum]=1;
	
    if (x>s || x<-s){
        fprintf (g,"0");
        return 0;
    }
	int go=s>0?s:s*-1;
	
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            val=i*j;
            for(int k=-go;k<=go;++k) L2[sum+k]=(L1[sum+k]+L1[sum+k-val]+L1[sum+k+val])%mod;
			memcpy (L1,L2,sizeof(L2));
        }
	}
    fprintf(g,"%d",L1[sum+x]);
    
	return 0;
}