#include #include #include #include #include #include #include #include int main() { std::ifstream ifs { "WAYPOINTS.txt" }; std::vector> waypoints { }; std::transform(std::istream_iterator{ ifs }, std::istream_iterator{ }, std::back_inserter(waypoints), [](std::string const& waypoint) { double x, y; std::istringstream iss { waypoint }; iss >> x; iss.ignore(1); // ignore - iss >> y; return std::make_pair(x, y); }); std::adjacent_difference(waypoints.begin(), waypoints.end(), waypoints.begin(), [](std::pair const& lhs, std::pair const& rhs) { return std::make_pair(lhs.first - rhs.first, lhs.second - rhs.second); }); std::vector distances(waypoints.size() - 1); std::transform(std::next(waypoints.begin()), waypoints.end(), distances.begin(), [](std::pair const& diff) { return std::sqrt(diff.first*diff.first + diff.second*diff.second); }); std::cout << std::accumulate(distances.begin(), distances.end(), 0.0) << std::endl; }