Pagini recente » Cod sursa (job #3172740) | Cod sursa (job #741519) | Cod sursa (job #184416) | Cod sursa (job #2045348) | Cod sursa (job #1762464)
#include <iostream>
#include <cstdio>
#define MAXK 33
#define MAXS 10050
#define MAXN 22
#define MOD 3210121
using namespace std;
int k, s, n;
int a[MAXN][MAXK];
void citire()
{
scanf("%d %d %d", &k, &s, &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= k; j++)
scanf("%d", &a[i][j]);
}
int din[MAXK][MAXS], pre[MAXS];
void dinam()
{
for (int i = 0; i <= s; i++)
din[0][i] = 1;
for (int i = 0; i <= k; i++)
din[i][0] = 1;
for (int i = 1; i <= k; i++)
for (int j = 1; j <= s; j++)
din[i][j] = (din[i][j-1] + din[i-1][j]) % MOD;
for (int i = 0; i <= s; i++)
pre[i] = din[k][i];
}
int rez, semn = 1, sol[MAXN][MAXK];
void solve(int step)
{
if (step == n+1) {
int sum = 0;
for (int i = 1; i <= k; i++)
sum += sol[step][i];
if (sum < s)
rez = (MOD + rez + semn*pre[s-sum]) % MOD;
return;
}
solve(step+1);
semn *= -1;
for (int i = 1; i <= k; i++)
sol[step+1][i] = max(sol[step][i], a[step][i]);
solve(step+1);
semn *= -1;
}
int main()
{
freopen("cowfood.in", "r", stdin);
freopen("cowfood.out", "w", stdout);
citire();
dinam();
solve(1);
rez = (MOD + rez - (k*s+1)) % MOD;
printf("%d", rez);
return 0;
}