Pagini recente » Cod sursa (job #932113) | Cod sursa (job #2672848) | Cod sursa (job #2093513) | Cod sursa (job #1640996) | Cod sursa (job #2063818)
#include <iostream>
#include <cstdio>
#define MOD 3210121
using namespace std;
int n,k,s;
int a[25][35], dp[35][10005], m[35], a1[25][35];
int sol;
void pricipiulise(int p, int semn)
{
if(p==n+1)
{
int l=0;
for(int i=1;i<=k;i++)
l+=m[i];
if(l<=s)
sol=(sol+MOD+semn*dp[k][s-l])%MOD;
return ;
}
pricipiulise(p+1,semn);
for(int i=1;i<=k;i++)
{
a1[p][i]=m[i];
m[i]=max(m[i],a[p][i]);
}
pricipiulise(p+1,-semn);
for(int i=1;i<=k;i++)
m[i]=a1[p][i];
}
int main()
{
freopen("cowfood.in","r",stdin);
//freopen("cowfood.out","w",stdout);
scanf("%d %d %d", &k,&s,&n);
for(int i=1;i<=n;i++)
{
scanf("\n%d", &a[i][1]);
for(int j=2;j<=k;j++)
{
scanf(" %d", &a[i][j]);
}
}
for(int i=0;i<=s;i++)
dp[0][i]=1;
for(int i=1;i<=k;i++)
{
dp[i][0]=1;
for(int j=1;j<=s;j++)
{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
dp[i][j]%=MOD;
}
}
pricipiulise(1,1);
sol=(sol-s*k-1+MOD)%MOD;
cout<<sol;
return 0;
}