diff options
author | June McEnroe <june@causal.agency> | 2018-12-03 00:48:31 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-12-03 00:48:31 -0500 |
commit | 713eff622fccb8166da03e29469c44786b6c3425 (patch) | |
tree | 7a98c68ef3f44d4cd91e4a9013d27c3f8b2810a2 /2018/day03.c | |
parent | Solve day 3 part 1 (diff) | |
download | aoc-713eff622fccb8166da03e29469c44786b6c3425.tar.gz aoc-713eff622fccb8166da03e29469c44786b6c3425.zip |
Solve day 3 part 2
Diffstat (limited to '')
-rw-r--r-- | 2018/day03.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/2018/day03.c b/2018/day03.c index b4544c1..0778440 100644 --- a/2018/day03.c +++ b/2018/day03.c @@ -7,15 +7,23 @@ typedef unsigned uint; enum { Len = 1000 }; static byte fabric[Len][Len]; +static struct { + uint x, y, w, h; +} claims[2 * Len]; + int main() { + uint n = 0; while (!feof(stdin)) { - uint d, x, y, w, h; - scanf("#%u @ %u,%u: %ux%u\n", &d, &x, &y, &w, &h); - for (uint i = 0; i < w; ++i) { - for (uint j = 0; j < h; ++j) { - fabric[x + i][y + j]++; + scanf( + "#%*u @ %u,%u: %ux%u\n", + &claims[n].x, &claims[n].y, &claims[n].w, &claims[n].h + ); + for (uint x = 0; x < claims[n].w; ++x) { + for (uint y = 0; y < claims[n].h; ++y) { + fabric[claims[n].x + x][claims[n].y + y]++; } } + n++; } uint count = 0; for (uint x = 0; x < Len; ++x) { @@ -24,4 +32,15 @@ int main() { } } printf("%u\n", count); + uint i; + for (i = 0; i < n; ++i) { + uint overlap = 0; + for (uint x = 0; x < claims[i].w; ++x) { + for (uint y = 0; y < claims[i].h; ++y) { + if (fabric[claims[i].x + x][claims[i].y + y] > 1) overlap = 1; + } + } + if (!overlap) break; + } + printf("%u\n", 1 + i); } |