6
Position(int pos, int speed, int moves) {15
int racecar(int target) {20
set<pair<long long int, long long int>> s;23
Position u = q.front();26
if (u.pos == target) return u.moves;28
if (s.find({u.pos, u.speed}) != s.end())31
s.insert({u.pos, u.speed});33
// only cases when you might need to move backwards34
if ((u.pos + u.speed > target && u.speed > 0) ||35
(u.pos + u.speed < target && u.speed < 0)) {36
long long int speed = u.speed > 0 ? -1 : 1;37
Position bkwd(u.pos, speed, u.moves + 1);41
Position fwd(u.pos + u.speed, 2 * u.speed, u.moves + 1);