Cod sursa(job #37212)
Utilizator | Data | 24 martie 2007 18:09:33 | |
---|---|---|---|
Problema | Diamant | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<stdio.h>
int n,m,a[50000],i,j,k,y,x,xmax;
int min(int x,int y){return x<y?x:y;}
void ver(int k,int y)
{if(k==0) {a[y]++;if(!xmax) xmax=1;return;}
a[k+y]+=a[k];
if(k+y>xmax) xmax=min(k+y,x);
if(k>y) a[k-y]+=a[k];
}
int main()
{freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d %d %d",&n,&m,&x);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{y=i*j;
for(k=xmax;k>=0;k--)
if(a[k]||k==0) ver(k,y);}
printf("%d",a[x]);
fclose(stdout);
return 0;}