2023 day 1: add C++ solution
This commit is contained in:
parent
3f971f69ca
commit
ae27321e81
60
2023/1/main.cpp
Normal file
60
2023/1/main.cpp
Normal file
|
@ -0,0 +1,60 @@
|
|||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
const string NUMBERS[] = {
|
||||
"one",
|
||||
"two",
|
||||
"three",
|
||||
"four",
|
||||
"five",
|
||||
"six",
|
||||
"seven",
|
||||
"eight",
|
||||
"nine",
|
||||
};
|
||||
|
||||
int main() {
|
||||
ios::sync_with_stdio(0);
|
||||
cin.tie(0);
|
||||
|
||||
int ret = 0;
|
||||
|
||||
string line;
|
||||
for (;;) {
|
||||
getline(cin, line);
|
||||
if (cin.eof())
|
||||
break;
|
||||
|
||||
int pi = INT_MAX, pl = -1, vi = 0, vl = 0;
|
||||
for (int i = 0; i < line.size(); i++) {
|
||||
unsigned char c = line[i] - '0';
|
||||
if (c <= 9) {
|
||||
if (vi == 0) {
|
||||
pi = i;
|
||||
vi = c;
|
||||
}
|
||||
pl = i;
|
||||
vl = c;
|
||||
}
|
||||
}
|
||||
for (int n = 1; n <= 9; n++) {
|
||||
const auto strn = NUMBERS[n - 1];
|
||||
int i = 0;
|
||||
int posi = line.find(strn);
|
||||
if (posi == string::npos)
|
||||
continue;
|
||||
int posl = line.rfind(strn);
|
||||
if (posi < pi) {
|
||||
pi = posi;
|
||||
vi = n;
|
||||
}
|
||||
if (posl > pl) {
|
||||
pl = posl;
|
||||
vl = n;
|
||||
}
|
||||
}
|
||||
ret += vi * 10 + vl;
|
||||
}
|
||||
|
||||
cout << ret << '\n';
|
||||
}
|
Loading…
Reference in a new issue