aboutsummaryrefslogtreecommitdiff
path: root/2024/09/day09b.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2024/09/day09b.cpp')
-rw-r--r--2024/09/day09b.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/2024/09/day09b.cpp b/2024/09/day09b.cpp
index 3b1ac21..c304ed4 100644
--- a/2024/09/day09b.cpp
+++ b/2024/09/day09b.cpp
@@ -1,6 +1,7 @@
1#include <algorithm> 1#include <algorithm>
2#include <iostream> 2#include <iostream>
3#include <map> 3#include <map>
4#include <ranges>
4#include <set> 5#include <set>
5#include <sstream> 6#include <sstream>
6#include <string> 7#include <string>
@@ -21,16 +22,16 @@ int main() {
21 a.push_back(id % 2 == 0 ? id/2 : -1); // -1 = space 22 a.push_back(id % 2 == 0 ? id/2 : -1); // -1 = space
22 } 23 }
23 24
24 for (int i = file.size()-1; i >= 0; i--) { 25 for (auto& p : file | views::reverse) {
25 for (auto& f : freesp) { 26 for (auto& f : freesp) {
26 if (f.first >= file[i].first) break; 27 if (f.first >= p.first) break;
27 if (f.second >= file[i].second) { 28 if (f.second >= p.second) {
28 for (int k = 0; k < file[i].second; k++) { 29 for (int k = 0; k < p.second; k++) {
29 a[f.first+k] = a[file[i].first+k]; 30 a[f.first+k] = a[p.first+k];
30 a[file[i].first+k] = -2; 31 a[p.first+k] = -2;
31 } 32 }
32 f.first += file[i].second; 33 f.first += p.second;
33 f.second -= file[i].second; 34 f.second -= p.second;
34 break; 35 break;
35 } 36 }
36 } 37 }

Generated with cgit - Back to sebastiano.tronto.net