Pagini recente » Cod sursa (job #1490995) | Cod sursa (job #1057489) | Cod sursa (job #333379) | Cod sursa (job #2284807) | Cod sursa (job #487007)
Cod sursa(job #487007)
#include<fstream>
using namespace std;
const char iname[]="cowfood.in";
const char oname[]="cowfood.out";
const int maxn=50;
const int maxs=10005;
const int mod=3210121;
ifstream f(iname);
ofstream g(oname);
int k,s,n,i,j,S,pos[maxn][maxs],a[maxn][maxn],rez,sgn,maxt[maxn],p;
int main()
{
f>>k>>s>>n;
pos[0][0]=1;
pos[1][0]=1;
for(i=1;i<=k;++i,pos[i][0]=1)
for(j=1;j<=s;++j)
pos[i][j]=(pos[i-1][j]+pos[i][j-1])%mod;
for(i=1;i<=s;++i)
pos[k][i]=(pos[k][i]+pos[k][i-1])%mod;
for(i=0;i<n;++i)
for(j=1;j<=k;++j)
f>>a[i][j];
rez=pos[k][s-2];
for(i=1;i<(1<<n);++i)
{
sgn=0;
memset(maxt,0,sizeof(maxt));
for(j=0;j<n;++j)
if((1<<j)&i)
{
++sgn;
for(p=1;p<=k;++p)
maxt[p]=max(maxt[p],a[j][p]);
}
S=s;
for(j=1;j<=k;++j)
S-=maxt[j];
if(S>=0)
if(sgn&1)
rez-=pos[k][S],rez%=mod;
else
rez+=pos[k][S],rez%=mod;
}
if(rez<0)
rez+=mod;
g<<rez<<"\n";
}