Pagini recente » Cod sursa (job #594651) | Cod sursa (job #1229616) | Cod sursa (job #1399556) | Cod sursa (job #768795) | Cod sursa (job #2861673)
#include <bits/stdc++.h>
#define MOD 3210121
using namespace std;
ifstream fin("cowfood.in");
ofstream fout("cowfood.out");
int k, s, n, m, v[25][35], x[25], maxi[25][35], comb[10005], ans;
void back(int pas) {
for(int i = x[pas - 1] + 1; i <= n; i++) {
int sum = 0;
for(int j = 1; j <= k; j++) {
maxi[pas][j] = max(maxi[pas - 1][j], v[i][j]);
sum += maxi[pas][j];
}
if(sum <= s) {
if(pas % 2 == 0) {
m -= comb[s - sum];
if(m < 0) {
m += MOD;
}
} else {
m += comb[s - sum];
if(m >= MOD) {
m -= MOD;
}
}
x[pas] = i;
back(pas + 1);
}
}
}
int main() {
fin >> k >> s >> n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= k; j++) {
fin >> v[i][j];
}
}
fin.close();
for(int i = 0; i <= s; i++) {
comb[i] = 1;
}
for(int i = 1; i <= k; i++) {
for(int j = 1; j <= s; j++) {
comb[j] += comb[j - 1];
comb[j] %= MOD;
}
}
back(1);
int ans = comb[s] - s * k - 1 - m;
ans %= MOD;
if(ans < 0) {
ans += MOD;
}
fout << ans;
return 0;
}