C – Blue Spring
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#■解説2のパターン #入力を受け取る N, D, P = map(int,input().split()) F = list(map(int,input().split())) #降順でソート F = sorted(F, reverse=True) #変数 add_sum = 0 delete_sum = 0 #Dの間隔でループ処理 for i in range(0, N, D): #各ループ(Dの分だけ進んだ時点)で、その合計が周遊パスより大きいかによって処理を変える a = sum(F[i:i+D]) #print(a) #各ループでの合計額がパスより大きい場合 if a > P: #delte_sumにD日間の通常料金の合計額を加える #パスを使った場合はこの間の通常料金を使わないので、後で合計額から差し引く delete_sum += a #add_sumにD日分の周遊パスの値段を加える add_sum += P #Dの日数分だけ進んだ時の合計額がパスよりも小さい場合 #つまり、パスを使わず通常料金で全て遊ぶ方が安い場合 else: break #通常料金の合計額から、delete_sumを引き、add_sumを加える res = sum(F) - delete_sum + add_sum print(res) |
まとめ
AtCoder Beginner Contest 解答・解説記事一覧
コメント