Pagini recente » Cod sursa (job #529725) | Cod sursa (job #1673205) | Cod sursa (job #2157516) | Cod sursa (job #2462234) | Cod sursa (job #1952339)
#include <fstream>
#define nmax 35
#define smax 10005
#define mod 3210121
using namespace std;
ifstream f("cowfood.in");
ofstream g("cowfood.out");
int n,k,s,d[nmax][smax],sol;
int t[nmax],a[nmax],v[nmax][nmax];
void bkt(int p,int b)
{
int i,j,m;
if(p==n+1) {
m=0;
for(i=1;i<=k;++i)
m+=t[i];
if(m<=s) {
j=d[k][s-m];
if(b&1)
j=-j;
sol=(sol+j+mod)%mod;
}
}
else {
bkt(p+1,b);
int w[nmax]={0};
for(i=1;i<=k;++i) {
w[i]=t[i];
t[i]=max(t[i],v[p][i]);
}
bkt(p+1,b+1);
for(i=1;i<=k;++i)
t[i]=w[i];
}
}
int main()
{
int i,j;
f>>k>>s>>n;
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
f>>v[i][j];
for(i=0;i<=s;i++)
d[0][i]=1;
for(i=1;i<=k;i++) {
d[i][0]=1;
for(j=1;j<=s;j++) {
d[i][j]=d[i-1][j]+d[i][j-1];
if(d[i][j]>=mod)
d[i][j]-=mod;
}
}
bkt(1,0);
g<<(sol-1-1LL*s*k%mod+mod)%mod;
return 0;
}