Pagini recente » Cod sursa (job #2366838) | Cod sursa (job #24145) | Cod sursa (job #2547638) | Cod sursa (job #1617753) | Cod sursa (job #146072)
Cod sursa(job #146072)
#include <stdio.h>
#include <memory.h>
int main (void) {
FILE * fi = fopen("diamant.in","rt");
FILE * fo = fopen("diamant.out","wt");
const long NMAX=80000;
const long pivot=NMAX/2;
long x, n, m;
long var[NMAX], vars=0;
fscanf(fi,"%ld %ld %ld",&x,&n,&m);
for (long i=1; i<=n; i++) for (long j=1; j<=m; j++) {
long prod=i*j;
var[vars]=prod;
vars++;
};
long cur[NMAX], noo[NMAX];
memset(cur,0,sizeof(cur));
memset(noo,0,sizeof(noo));
cur[pivot]=1; noo[pivot]=1;
for (long i=0; i<vars; i++) {
for (long j=1; j<NMAX; j++)
if (cur[j]!=0)
if ((j+var[i]>0) && (j+var[i]<NMAX)) {
// printf("in %ld am ajuns din %ld cu var %ld [aveam %ld, acum avem %ld]\n",j+var[i]-pivot,j-pivot,var[i],noo[j+var[i]],cur[j]);
noo[j+var[i]]+=cur[j];
};
for (long j=1; j<NMAX; j++)
if (cur[j]!=0)
if ((j-var[i]>0) && (j-var[i]<NMAX)) {
// printf("in %ld am ajuns din %ld cu var %ld [aveam %ld, acum avem %ld]\n",j-var[i]-pivot,j-pivot,-var[i],noo[j-var[i]],cur[j]);
noo[j-var[i]]+=cur[j];
};
// printf("---["); for (long k=pivot-5; k<=pivot+5; k++) printf("%ld ",noo[k]); printf("]---\n");
memcpy(cur,noo,sizeof(cur));
}
fprintf(fo,"%ld\n",cur[pivot+x]);
fclose(fi); fclose(fo);
return 0;
};