Pagini recente » Cod sursa (job #1026534) | Cod sursa (job #2667971) | Cod sursa (job #374732) | Cod sursa (job #3282415) | Cod sursa (job #1952334)
#include <fstream>
#define nmax 25
#define kmax 35
#define smax 10005
#define mod 3210121
using namespace std;
ifstream f("cowfood.in");
ofstream g("cowfood.out");
int k,s,n,v[nmax][kmax];
int sol,q[kmax][smax];
void gen(int p,int a[],int t)
{
int i;
if (p<=n) {
int b[kmax]={0};
for (i=1;i<=k;i++)
b[i]=a[i];
gen(p+1,b,t);
for (i=1;i<=k;i++)
a[i]=max(a[i],v[p][i]);
gen(p+1,a,t+1);
return;
}
if (!t)
return;
int u=0;
for (i=1;i<=k;i++)
u+=a[i];
if (u>s)
return;
if (t&1)
i=-1;
else
i=1;
sol+=1LL*i*q[k][s-u]%mod;
sol=(sol+mod)%mod;
}
int main()
{
int i,j,a[kmax]={0};
f>>k>>s>>n;
for(i=0;i<=s;i++)
q[0][i]=1;
for(i=1;i<=k;i++)
for(j=q[i][0]=1;j<=s;j++) {
q[i][j]=q[i-1][j]+q[i][j-1];
if (q[i][j]>=mod)
q[i][j]-=mod;
}
sol=q[k][s-k];
for (i=1;i<=n;i++)
for (j=1;j<=k;j++)
f>>v[i][j];
gen(1,a,0);
g<<sol<<'\n';
return 0;
}