aboutsummaryrefslogtreecommitdiff
path: root/2022/src/day10.cpp
blob: 76c953cdd2e4891b093fb76ae84dcec30fba8df0 (plain)
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
39
40
41
42
43
44
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

vector<int>
read_file(string_view filename)
{
	fstream     input{ filename };
	vector<int> cycles{};
	int         reg_x = 1;

	static const string add_instr = "addx ";

	for ( string line; getline(input, line); ) {
		cycles.emplace_back(reg_x);

		if ( line.starts_with(add_instr) ) {
			cycles.emplace_back(reg_x);
			reg_x += stoi(line.substr(add_instr.size()));
		}
	}
	cycles.emplace_back(reg_x);

	return cycles;
}

void
part1(const vector<int>& cycles)
{
	int sum = 0;
	for ( size_t cycle = 19; cycle < cycles.size(); cycle += 40 ) {
		sum += static_cast<int>(cycle + 1) * cycles[cycle];
	}
	cout << sum << endl;
}

int
main()
{
	const auto cycles = read_file("data/day10.txt");
	part1(cycles);
}