Pagini recente » Cod sursa (job #2799524) | Cod sursa (job #272514) | Cod sursa (job #2714483) | Cod sursa (job #2299851) | Cod sursa (job #2718482)
#include <bits/stdc++.h>
#define MOD 3210121
using namespace std;
ifstream fin("cowfood.in");
ofstream fout("cowfood.out");
int C[12000][40], k, s, n, mat[35][35], rez, stiva[105], maxx[50][50];
void bkt(int pas)
{
if(pas > 0)
{
int sum = 0;
for(int i = 1; i <= k; ++i)
{
maxx[pas][i] = max(maxx[pas - 1][i], mat[stiva[pas]][i]);
sum += maxx[pas][i];
}
if(sum <= s){
if(pas % 2 == 0)
rez = (rez - C[s - sum + k][k] + MOD) % MOD;
else rez = (rez + C[s - sum + k][k]) % MOD;
}
if(pas == n)
return;
}
for(int i = stiva[pas] + 1; i <= n; ++i)
{
stiva[pas + 1] = i;
bkt(pas + 1);
}
}
int main()
{
C[0][0] = 1;
for(int i = 1; i < 12000; ++i)
{
C[i][0] = 1;
for(int j = 1; j <= 35; ++j)
C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % MOD;
}
fin >> k >> s >> n;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= k; ++j)
fin >> mat[i][j];
bkt(0);
fout << (C[s + k][k] - s * k - 1 - rez + MOD) % MOD << '\n';
return 0;
}