SRM400 DIV2 Level1
町の道路が格子状になっていて、今(0, 0)にいて、(gX, gY)にある会社になるはやで行きたい。タクシーのいる場所が与えられていて、そこまで歩いていってタクシーに乗るか、全部歩くかで、もっともかかる時間が短い経路を求めてかかる時間を答えよ、という問題。問題文:http://www.topcoder.com/stat?c=problem_statement&pm=8753&rd=12172
実際に書いたコードはよけいな使わない変数があったり変数名が行けていなかったりしたので書き直した:
int minTime(vector <int> tXs, vector <int> tYs, int gX, int gY, int walkTime, int taxiTime) { int minTime = (abs(gX) + abs(gY)) * walkTime; size_t N = tXs.size(); for(size_t i=0; i<N; i++){ int walk = abs(tXs[i]) + abs(tYs[i]); int taxi = abs(tXs[i] - gX) + abs(tYs[i] - gY); int time = walk * walkTime + taxi * taxiTime; if(time < minTime){ minTime = time; } } return minTime; }
単純にそれぞれのタクシー乗り場を使った場合の時間を計算して最小の値を取るだけ。