Pagini recente » Cod sursa (job #2874927) | Cod sursa (job #1806643) | Cod sursa (job #183748) | Cod sursa (job #389852) | Cod sursa (job #603458)
Cod sursa(job #603458)
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 33
#define maxs 10010
#define mod 3210121
int n, i, j, s, k, sol;
int d[maxs], e[maxn][maxn], me[maxn][maxn];
void back(int niv, int semn)
{
if(niv==n+1)
{
int sum=0;
for(int i=1; i<=k; ++i)
sum+=me[niv-1][i];
if(s>=sum)
sol=(sol+mod+semn*d[s-sum])%mod;
return;
}
back(niv+1, semn);
for(int i=1; i<=k; ++i)
me[niv][i]=max(me[niv-1][i], e[niv][i]);
back(niv+1, semn*(-1));
}
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)
for(int j=1; j<=k; ++j)
scanf("%d", &e[i][j]);
for(int i=0; i<=s; ++i)
d[i]=1;
for(int i=1; i<=k; ++i)
for(int j=1; j<=s; ++j)
d[j]=(d[j]+d[j-1])%mod;
back(1, 1);
sol=(sol-1-(k*s)%mod+2*mod)%mod;
printf("%d\n", sol);
return 0;
}