cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み
スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、
AS | |
問題
main( T : int<0..10>[2..10], strict_sorted(T) ) { let pT = all_permutations(T) let spT = map(pT, move(T,_1)) max(spT) } move(T, S) { sigma(zip(T, S, abs(_1 - _2))) / 2 }
解答例
int solve(vector <int> T) { int maxMove = 0; vector<int> S = T; sort(S.begin(), S.end()); do { int dif = 0; for(int i=0; i<S.size(); ++i) dif += abs(S[i]-T[i]); maxMove = max(maxMove, dif/2); } while( next_permutation(S.begin(), S.end()) ); return maxMove; }
微妙。sigma(zip(T, S, abs(_1 - _2))) / 2 が問題文の仕様に合っているというのは何一つ自明ではない。といって問題の仕様どうやって記述しきればいいのかな…。
reverse(S.begin(), S.end()); int dif = 0; for(int i=0; i<S.size(); ++i) dif += abs(S[i]-T[i]); return dif/2;
この解はとりあえず導けなくていいや。
presented by cafelier/k.inaba under