summary refs log tree commit diff
path: root/22.20/main.cpp
diff options
context:
space:
mode:
authordzwdz2022-12-20 23:12:30 +0100
committerdzwdz2022-12-20 23:12:30 +0100
commit4b7e027f5ac3cf1f62f986573708f3a85aa1d955 (patch)
tree3894ed1788f3edb7f2b39ca38b6c7e6ab27538d8 /22.20/main.cpp
parent8cf452005e0c87ecb9cb98500f9dee2b2e479baa (diff)
day 20 part 1
Diffstat (limited to '22.20/main.cpp')
-rw-r--r--22.20/main.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/22.20/main.cpp b/22.20/main.cpp
new file mode 100644
index 0000000..753cdf5
--- /dev/null
+++ b/22.20/main.cpp
@@ -0,0 +1,47 @@
+/* The reason I gave up on this:
+ * I thought I'd need to somehow track the first "node", so I wanted to
+ * experiment on a more naive implementation. I don't.
+ * Also, the dumb algorithm is still by far fast enough. So, Python it is. */
+#include <cstdio>
+#include <vector>
+using namespace std;
+
+struct CNode
+{
+	size_t id;
+	CNode *prev = NULL, *next = NULL;
+};
+
+struct Circular
+{
+	vector<CNode> nodes;
+	Circular(size_t size) {
+		for (size_t i = 0; i < size; i++) {
+			nodes.push_back(CNode{i});
+		}
+
+		// pointers to stuff in a vector? how risque!
+		for (size_t i = 0; i < size - 1; i++) {
+			nodes[i].next = &nodes[i+1];
+			nodes[i+1].prev = &nodes[i];
+		}
+		CNode *f = &nodes.front();
+		CNode *b = &nodes.back();
+		f->prev = b;
+		b->next = f;
+	}
+
+	void print() {
+	}
+};
+
+int
+main()
+{
+	int n;
+	vector<int> input;
+	while (scanf("%d ", &n) == 1) {
+		input.push_back(n);
+	}
+	Circular c(input.size());
+}