LoginSignup
0
2

AtCoder Beginner Contest 228の[C - Final Day]をSwiftで

Last updated at Posted at 2021-11-22

SwiftでAtCoder Beginner Contest 228の「C - Final Day」を解きました。

問題内容

問題文
N 人の生徒が 4 日間にわたる試験を受けています。
それぞれの日に行われる試験は 300 点満点です。すなわち、4 日間を通した試験の満点は 1200 点です。
現在 3 日目までの試験が終わり、これから 4 日目の試験が行われようとしています。i(1≤i≤N) 番目の生徒は j(1≤j≤3) 日目の試験で P i,j点獲得しました。
それぞれの生徒について、4 日目の試験後に上位 K 位以内に入っていることがあり得るかどうか判定してください。
ただし、4 日目の試験後の生徒の順位は、その生徒よりも 4 日間の合計点が高い生徒の人数に 1 を加えた値として定めます。

解答コード

func abc228C(){
    let array = readLine()!.split(separator:" ").map{Int($0)!}
    let n = array[0]
    let k = array[1]
    
    var result : [Int] = []
    
    for _ in 0..<n{
        result.append(readLine()!.split(separator:" ").map{Int($0)!}.reduce(0, +))
    }
    var result_ = result
    
    result_ = result_.sorted(by: >)
    let limit = result_[k - 1] - 300
    
    for i in result{
        if i >= limit{
            print("Yes")
        }
        else{
            print("No")
        }
    }
}
abc228C()

現時点での全員の点数を配列にして高い順に並び替え、K位(配列のK番目)の人の点数 - 300点未満の人にはNO、それ以外の人にはYesを出力しています。

Swiftのお役立ち情報

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2