LoginSignup
0
2

AtCoder Beginner Contest 229の[C - Cheese]をSwiftで

Last updated at Posted at 2021-11-28

SwiftでAtCoder Beginner Contest 229の[C - Cheese]を解きました。

問題内容

問題文
ピザ屋で働く高橋くんは、まかないとして美味しいチーズピザを作ることにしました。
今、高橋くんの目の前に N 種類のチーズがあります。
i 種類目のチーズは 1 [g] あたりのおいしさが Aiで、Bi[g] あります。
ピザのおいしさは、ピザに乗せたチーズのおいしさの総和で決まります。
但し、チーズを使いすぎると怒られてしまうため、乗せたチーズの重さは合計で W [g] 以下である必要があります。
この条件のもとで、可能なピザのおいしさの最大値を求めてください。

解答コード

func abc229C(){
    var aa = readLine()!.split(separator:" ").map{Int($0)!}
    let n = aa[0]
    var w = aa[1]
    var result = 0
    var array : [[Int]] = []
    
    for _ in 0..<n { array.append(readLine()!.split(separator:" ").map{Int($0)!}) }
    array.sort{$0[0] > $1[0]}
    
    while w > 0{
        for i in 0..<n {
            if array[i][1] <= w{
                result += array[i][0] * array[i][1]
                w -= array[i][1]
            }
            else{
                result += array[i][0] * w
                w = 0
            }
        }
        break
    }
    print(result)
}
abc229C()

AとBの配列の配列、二次元配列を作って、A(1gあたりのおいしさ)が大きい順に並び替えを行います。

あとは重さのキャパが0になるまでチーズの重さを追加していきます。

追加する際にはBをすべて使えるか、一部しか使えないかで振り分けしています。

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