cleanup
[advent21.git] / 17a.c
1 #include <stdio.h>
2 #include <stdbool.h>
3
4 bool is_in(int dx, int dy, int x1, int x2, int y1, int y2, int *maxy)
5 {
6 int x = 0, y = 0, my = 0;
7 while (y >= y1 && x <= x2) {
8 x+=dx;
9 y+=dy;
10 my = y > my ? y : my;
11 dx = dx == 0 ? 0 : dx-1;
12 dy--;
13 if (x >= x1 && x <= x2 && y >= y1 && y <= y2) {
14 *maxy = my > *maxy ? my : *maxy;
15 return true;
16 }
17 }
18 return false;
19 }
20
21 int main()
22 {
23 int x1, x2, y1, y2, maxy = 0;
24 scanf("target area: x=%d..%d, y=%d..%d\n", &x1, &x2, &y1, &y2);
25 for (int dy = x2; dy >= 0; dy--)
26 for (int dx = 1; dx <= x2; dx++)
27 if (is_in(dx, dy, x1, x2, y1, y2, &maxy))
28 break;
29 printf("%d\n", maxy);
30 }