#include <cstdio>
#include <cstring>
int main(void)
{
unsigned n, m, k;
scanf("%u%u%u", &n, &m, &k);
static unsigned long long sumy[300000];
unsigned long long *ps = sumy;
for (unsigned i = 0; i < n; i++) {
unsigned long long suma = 0ULL;
for (unsigned j = 0; j < m; j++) {
unsigned long long a;
scanf("%llu", &a);
suma += a;
*ps++ = suma;
}
}
static unsigned long long sofar[300001];
for (unsigned i = 0; i < n; i++) {
for (unsigned j = k; ;) {
for (unsigned h = 0; h < m; h++)
if (j >= h + 1) {
unsigned long long val = sofar[j - h - 1] + sumy[i * m + h];
if (sofar[j] < val)
sofar[j] = val;
}
if (!--j)
break;
}
}
printf("%llu\n", sofar[k]);
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <cstdio> #include <cstring> int main(void) { unsigned n, m, k; scanf("%u%u%u", &n, &m, &k); static unsigned long long sumy[300000]; unsigned long long *ps = sumy; for (unsigned i = 0; i < n; i++) { unsigned long long suma = 0ULL; for (unsigned j = 0; j < m; j++) { unsigned long long a; scanf("%llu", &a); suma += a; *ps++ = suma; } } static unsigned long long sofar[300001]; for (unsigned i = 0; i < n; i++) { for (unsigned j = k; ;) { for (unsigned h = 0; h < m; h++) if (j >= h + 1) { unsigned long long val = sofar[j - h - 1] + sumy[i * m + h]; if (sofar[j] < val) sofar[j] = val; } if (!--j) break; } } printf("%llu\n", sofar[k]); return 0; } |
English