mid-kid
2 years ago
4 changed files with 2553 additions and 3 deletions
@ -0,0 +1,48 @@ |
|||||
|
#include <iostream> |
||||
|
#include <vector> |
||||
|
#include <array> |
||||
|
|
||||
|
using namespace std; |
||||
|
|
||||
|
vector<array<unsigned, 2>> parse() |
||||
|
{ |
||||
|
vector<array<unsigned, 2>> input; |
||||
|
string line; |
||||
|
while (getline(cin, line)) { |
||||
|
if (line.size() < 3 || line[1] != ' ') abort(); |
||||
|
unsigned oppo = line[0] - 'A'; |
||||
|
unsigned user = line[2] - 'X'; |
||||
|
if (oppo >= 3 || user >= 3) abort(); |
||||
|
input.push_back({oppo, user}); |
||||
|
} |
||||
|
return input; |
||||
|
} |
||||
|
|
||||
|
unsigned p1(vector<array<unsigned, 2>> &input) |
||||
|
{ |
||||
|
unsigned score = 0; |
||||
|
for (array<unsigned, 2> i : input) { |
||||
|
unsigned shape = i[1]; |
||||
|
unsigned outcome = (i[1] - i[0] + 4) % 3; |
||||
|
score += shape + 1 + outcome * 3; |
||||
|
} |
||||
|
return score; |
||||
|
} |
||||
|
|
||||
|
unsigned p2(vector<array<unsigned, 2>> &input) |
||||
|
{ |
||||
|
unsigned score = 0; |
||||
|
for (array<unsigned, 2> i : input) { |
||||
|
unsigned shape = (i[1] + i[0] + 2) % 3; |
||||
|
unsigned outcome = i[1]; |
||||
|
score += shape + 1 + outcome * 3; |
||||
|
} |
||||
|
return score; |
||||
|
} |
||||
|
|
||||
|
int main() |
||||
|
{ |
||||
|
auto input = parse(); |
||||
|
cout << p1(input) << endl; |
||||
|
cout << p2(input) << endl; |
||||
|
} |
File diff suppressed because it is too large
@ -0,0 +1,2 @@ |
|||||
|
13009 |
||||
|
10398 |
Loading…
Reference in new issue