Pagini recente » Cod sursa (job #1926674) | Cod sursa (job #1781013) | Cod sursa (job #1737716) | Cod sursa (job #495973) | Cod sursa (job #1847353)
#include <cstdio>
#include <algorithm>
#define BIT(x) (1<<(x))
#define MOD 3210121
using namespace std;
typedef long long llong;
int mat[21][31];
int getNum(int s, int n)
{
if(n == 2) return 1LL * s * (s + 1) / 2;
int rez = 0;
for(int i = 1; i <= n; i++)
{
if(s - i <= 0)
break;
rez = (rez + getNum(s - i, n - i)) % MOD;
}
return rez;
}
int main()
{
freopen("cowfood.in", "r", stdin);
freopen("cowfood.out", "w", stdout);
llong rc, rez = 0;
int s, n, k, i, j, p, v[31], nb, sc;
scanf("%d%d%d", &k, &s, &n);
for(i = 0; i < n; i++)
for(j = 0; j < k; j++)
scanf("%d", &mat[i][j]);
for(i = 1; i < BIT(n); i++)
{
nb = 0;
sc = 0;
for(p = 0; p < k; p++)
v[p] = 0;
for(j = 0; j < n; j++)
{
if(i & BIT(j))
{
nb++;
for(p = 0; p < k; p++)
{
v[p] = max(v[p], mat[j][p]);
}
}
}
for(p = 0; p < k; p++)
{
sc += v[p];
}
rc = getNum(s - sc + 1, k);
if(nb & 1) rez += rc;
else rez -= rc;
}
rez = getNum(s - 1, k) - rez;
printf("%lld", rez);
return 0;
}