SRM468 RoadOrFlightEasy
はじめて臨んだTopCoder.以下のような強引なやり方は思いついたもののC++での書き方がわからず時間内にsubmitできず.行っているのは,差分のvectorをつくって,差分を降順ソート.roadTimeの合計-(差分の先頭からK個分の和).ただし,差分の値が0以下ならroad経由のほうが同等かそれ以上早いため,そこで打ち切り.
#include <map> #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; class RoadOrFlightEasy { public: int minTime(int N, vector <int> roadTime, vector <int> flightTime, int K) { int ret = 0; vector<int> diff; for(int i = 0; i < N; i++){ int r = roadTime[i]; int f = flightTime[i]; diff.push_back( r - f ); ret += r; } sort(diff.begin(), diff.end(), greater<int>()); for(int i = 0; i < K; i++){ if( diff[i] <= 0 ) break; ret -= diff[i]; } return ret; } };