Pagini recente » Cod sursa (job #2369697) | Cod sursa (job #2370128) | Cod sursa (job #500406) | Cod sursa (job #2532062) | Cod sursa (job #166173)
Cod sursa(job #166173)
#include <iostream>
using namespace std;
#define MOD 3210121
int K, S, N;
int Sum[10002][22];
int a[22][32],
v[22][32];
int sol;
#define MAX(a, b) ((a>b) ? (a) : (b))
void solve(int nv, int sgn, int num) {
for (int i = nv; i <= N; ++i) {
int sum(0);
for (int j(1); j <= K; ++j) {
v[num+1][j] = MAX(v[num][j], a[i][j]);
sum += v[num+1][j];
}
if (S-sum >= 0)
sol = (sol + Sum[S-sum][K]*sgn + MOD) % MOD;
solve(i+1, -1*sgn, num+1);
}
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("cowfood.in", "r");
fscanf(fi, "%d %d %d", &K, &S, &N);
for (int i(1); i <= N; ++i)
for (int j(1); j <= K; ++j)
fscanf(fi, "%d", a[i]+j);
fclose(fi);
Sum[0][0] = 1;
for (int i(1); i <= S; ++i)
Sum[i][0] = 1;
for (int j(1); j <= K; ++j)
for (int i(1); i <= S; ++i)
Sum[i][j] = (Sum[i - 1][j] + Sum[i][j - 1]) % MOD;
for (int i(2); i <= S; ++i)
sol = (sol + Sum[i][K - 1] - K + MOD) % MOD;
solve(1, -1, 0);
FILE *fo = fopen("cowfood.out", "w");
fprintf(fo, "%d\n", sol);
fclose(fo);
return 0;
}