#include <cstdio>
int calculate_cost(int row, int col);
int main() {
int n, k;
int best = 2020;
scanf("%d %d\n", &n, &k);
for (int row = 1; row <= n; row ++) {
for (int col = 1; col <= row; col++) {
int year;
scanf("%d", &year);
if (calculate_cost(row, col) <= k && year < best) {
best = year;
}
}
}
printf("%d\n", best);
return 0;
}
int calculate_cost(int row, int col) {
int depth;
if (2 * col <= row) {
depth = col;
} else {
depth = row - col + 1;
}
int bottom_triangle = (depth * (depth + 1)) / 2;
int strip_height = (row - 2 * depth + 1);
int strip = strip_height * depth;
int top_triangle_size = row - depth - strip_height;
int top_triangle = (top_triangle_size * (top_triangle_size + 1)) / 2;
return bottom_triangle + strip + top_triangle;
}
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 38 | #include <cstdio> int calculate_cost(int row, int col); int main() { int n, k; int best = 2020; scanf("%d %d\n", &n, &k); for (int row = 1; row <= n; row ++) { for (int col = 1; col <= row; col++) { int year; scanf("%d", &year); if (calculate_cost(row, col) <= k && year < best) { best = year; } } } printf("%d\n", best); return 0; } int calculate_cost(int row, int col) { int depth; if (2 * col <= row) { depth = col; } else { depth = row - col + 1; } int bottom_triangle = (depth * (depth + 1)) / 2; int strip_height = (row - 2 * depth + 1); int strip = strip_height * depth; int top_triangle_size = row - depth - strip_height; int top_triangle = (top_triangle_size * (top_triangle_size + 1)) / 2; return bottom_triangle + strip + top_triangle; } |
English