Pagini recente » Cod sursa (job #2675828) | Cod sursa (job #1147755) | Cod sursa (job #3174041) | Cod sursa (job #2461028) | Cod sursa (job #182393)
Cod sursa(job #182393)
#include<fstream.h>
long s;
long luat[44101],luatn[44101];
long rec[44101],recn[44101];
int main()
{
long i,j,m,n,val;
ofstream fout("diamant.out");
ifstream fin("diamant.in");
fin>>n>>m>>val;
fin.close();
long x[1000],dx=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
dx++;
x[dx]=i*j;
s+=x[dx];
}
if(val>s)
{
fout<<0<<'\n';
fout.close();
return 0;
}
luat[0]=1;
for(i=1;i<=dx;i++)
for(j=s;j>=0;j--)
{
if(luat[j]>0)
{
luat[j+x[i]]=(luat[j+x[i]]+luat[j])%10000;
if(j-x[i]>=0)
luat[j-x[i]]=(luat[j-x[i]]+luat[j])%10000;
else
{
luatn[x[i]-j]=(luatn[x[i]-j]+luat[j])%10000;
recn[x[i]-j]=1;
}
}
if(luatn[j]>0&&recn[j]==0)
{
if(-j+x[i]>=0)
luat[-j+x[i]]=(luat[-j+x[i]]+luatn[j])%10000;
else
luatn[-x[i]+j]=(luatn[-x[i]+j]+luatn[j])%10000;
if(j+x[i]<=s)
luatn[j+x[i]]=(luatn[j+x[i]]+luatn[j])%10000;
}
else
recn[j]=0;
}
for(i=0;i<=s;i++)
fout<<luat[i]<<" ";
fout<<luat[val]<<'\n';
fout.close();
return 0;
}
/*
if(-min>max)
max=-min;
for(j=max;j>=0;j--)
{
if(luat[j]>0)
{
luat[j+x[i]]+=luat[j];
luat[j+x[i]]=luat[j+x[i]]%10000;
rec[j+x[i]]=1;
if(j+x[i]>max)
max=j+x[i];
}
if(luatn[j]==1)
{
if(-j+x[i]>=0)
{
luat[-j+x[i]]+=luatn[j];
luat[-j+x[i]]=luat[-j+x[i]]%10000;
if(max<-j+x[i])
max=-j+x[i];
rec[-j+x[i]]=1;
if(-j+x[i]>max)
max=-j+x[i];
}
else
if(-j+x[i]<0)
{
luatn[j-x[i]]+=luatn[j];
luatn[j-x[i]]=luatn[j-x[i]]%10000;
recn[j-x[i]]=1;
if(-j+x[i]<min)
min=-j+x[i];
}
}
}
for(j=max;j>=0;j--)
{
if(luat[j]==1&&rec[j]==0)
{
if(j-x[i]>=0)
{
luat[j-x[i]]+=luat[j];
luat[j-x[i]]=luat[j-x[i]]%10000;
}
else
{
luatn[x[i]-j]+=luat[j];
luatn[-j+x[i]]=luat[-j+x[i]]%10000;
if(j-x[i]<min)
min=j-x[i];
}
}
else
rec[j]=0;
if(luatn[j]==1&&recn[j]==0)
{
luatn[j+x[i]]+=luatn[j];
luatn[j+x[i]]=luatn[j+x[i]]%10000;
if(-j-x[i]<min)
min=-j-x[i];
}
else
recn[j]=0;
}
}
*/