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);
}
|