Pagini recente » Cod sursa (job #570167) | Cod sursa (job #2823165) | Cod sursa (job #2938837) | Cod sursa (job #2664761) | Cod sursa (job #2030363)
#include <iostream>
#include <fstream>
#define MOD 3210121
using namespace std;
ifstream si("cowfood.in");
ofstream so("cowfood.out");
int n,k,s,sol,v[32],dp[32][10005],mat[22][32];
void backt(int x,int bit)
{
if(x==n+1)
{
int s1=0;
for(int i=1;i<=k;++i)
s1+=v[i];
if(s1<=s)
{
int m=dp[k][s-s1];
if(bit&1)
m=-m;
sol=(sol+m+MOD)%MOD;
}
}
else
{
backt(x+1,bit);
int a[32];
for(int i=1;i<=k;++i)
{
a[i]=v[i];
v[i]=max(v[i],mat[x][i]);
}
backt(x+1,bit+1);
for(int i=1;i<=k;++i)
v[i]=a[i];
}
}
int main()
{
si>>k>>s>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=k;++j)
si>>mat[i][j];
for(int i=0;i<=s;++i)
dp[0][i]=1;
for(int i=1;i<=k;++i)
for(int j=dp[i][0]=1;j<=s;++j)
dp[i][j]=(dp[i-1][j]+dp[i][j-1])%MOD;
backt(1,0);
so<<(sol-1-s*k+MOD)%MOD;
return 0;
}