#include <cstdio>
using I = unsigned int;
static constexpr I MAXN=2000;
static I cnt[MAXN*MAXN];
static I calc() {
I N, K, v, ret;
scanf("%u %u", &N, &K);
for (I y=0; y<N; ++y) {
for (I x=0; x<=y; ++x) {
I c;
if (y == 0)
c = 1;
else if (y == 1)
c = 2;
else if (x == 0)
c = cnt[(y-1)*MAXN]+1;
else if (x == y)
c = cnt[(y-1)*MAXN+x-1]+1;
else
c = cnt[(y-1)*MAXN+x-1]+cnt[(y-1)*MAXN+x]-cnt[(y-2)*MAXN+x-1]+1;
cnt[y*MAXN+x] = c;
scanf("%u", &v);
if (c == 1)
ret = v;
else if (c <= K && v < ret)
ret = v;
}
}
return ret;
}
int main() {
printf("%d\n", calc());
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 35 36 37 | #include <cstdio> using I = unsigned int; static constexpr I MAXN=2000; static I cnt[MAXN*MAXN]; static I calc() { I N, K, v, ret; scanf("%u %u", &N, &K); for (I y=0; y<N; ++y) { for (I x=0; x<=y; ++x) { I c; if (y == 0) c = 1; else if (y == 1) c = 2; else if (x == 0) c = cnt[(y-1)*MAXN]+1; else if (x == y) c = cnt[(y-1)*MAXN+x-1]+1; else c = cnt[(y-1)*MAXN+x-1]+cnt[(y-1)*MAXN+x]-cnt[(y-2)*MAXN+x-1]+1; cnt[y*MAXN+x] = c; scanf("%u", &v); if (c == 1) ret = v; else if (c <= K && v < ret) ret = v; } } return ret; } int main() { printf("%d\n", calc()); return 0; } |
English