結果
問題 | No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい |
ユーザー | harhogefoo |
提出日時 | 2016-10-14 23:36:07 |
言語 | Ruby (3.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,076 bytes |
コンパイル時間 | 478 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 91,824 KB |
最終ジャッジ日時 | 2024-11-22 06:33:45 |
合計ジャッジ時間 | 200,802 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | TLE | - |
testcase_01 | TLE | - |
testcase_02 | TLE | - |
testcase_03 | TLE | - |
testcase_04 | TLE | - |
testcase_05 | TLE | - |
testcase_06 | TLE | - |
testcase_07 | TLE | - |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | TLE | - |
testcase_11 | TLE | - |
testcase_12 | TLE | - |
testcase_13 | TLE | - |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | TLE | - |
testcase_17 | TLE | - |
testcase_18 | TLE | - |
testcase_19 | TLE | - |
testcase_20 | TLE | - |
testcase_21 | TLE | - |
testcase_22 | TLE | - |
testcase_23 | TLE | - |
testcase_24 | TLE | - |
testcase_25 | TLE | - |
testcase_26 | TLE | - |
testcase_27 | TLE | - |
testcase_28 | TLE | - |
testcase_29 | TLE | - |
testcase_30 | AC | 92 ms
17,408 KB |
testcase_31 | AC | 89 ms
50,708 KB |
testcase_32 | TLE | - |
testcase_33 | TLE | - |
testcase_34 | TLE | - |
testcase_35 | AC | 90 ms
17,280 KB |
testcase_36 | AC | 90 ms
26,368 KB |
testcase_37 | WA | - |
testcase_38 | WA | - |
testcase_39 | WA | - |
testcase_40 | WA | - |
testcase_41 | WA | - |
testcase_42 | TLE | - |
testcase_43 | TLE | - |
testcase_44 | AC | 3,347 ms
13,824 KB |
testcase_45 | WA | - |
testcase_46 | TLE | - |
testcase_47 | TLE | - |
コンパイルメッセージ
Syntax OK
ソースコード
n, k = gets.chomp.split(" ").map(&:to_i) h_solve = Hash.new(0) h_penalty = Hash.new(0) h_univ = Hash.new(0) h_passed_univ = Hash.new(0) passed = Array.new n.times do |i| solve, penalty, univ = gets.chomp.split(" ").map(&:to_i) h_solve[i] = solve h_penalty[i] = penalty h_univ[i] = univ h_passed_univ[univ] = 0 end k.times do # 最も多く解いたチームを抽出 solve_max = h_solve.max { |a, b| a[1] <=> b[1] } # puts "最大値#{solve_max}" best_solve = h_solve.select { |key, v| v == solve_max[1] } # puts "最大値のチーム: #{best_solve}" # puts "通過した大学: #{h_passed_univ}" if best_solve.length == 1 num = best_solve.to_a[0][0] passed.push(num) h_passed_univ[h_univ[num]] += 1 h_solve.delete(num) h_penalty.delete(num) h_univ.delete(num) next else # 今までに選抜された同じ大学のチーム数が少ない team = -1 passed_team_num = -1 is_same_num = false best_solve.each do |k, v| # puts "通過した大学: #{h_passed_univ[h_univ[k]]}" if passed_team_num == -1 passed_team_num = h_passed_univ[h_univ[k]] team = k else if h_passed_univ[h_univ[k]] < passed_team_num passed_team_num = h_passed_univ[h_univ[k]] team = k is_same_num = false elsif h_passed_univ[h_univ[k]] == passed_team_num is_same_num = true end end end if !is_same_num and team != -1 passed.push(team) h_passed_univ[h_univ[team]] += 1 h_solve.delete(team) h_penalty.delete(team) h_univ.delete(team) next else team = -1 p = -1 best_solve.each do |k, v| if p == -1 p = h_penalty[k] team = k else if h_penalty[k] < p p = h_penalty[k] team = k end end end passed.push(team) h_passed_univ[h_univ[team]] += 1 h_solve.delete(team) h_penalty.delete(team) h_univ.delete(team) end end end puts passed