BOJ 2847ゲームを作っている東俊.


https://www.acmicpc.net/problem/2847
時間1秒、メモリ128 MB
input :
  • 級の数Nが与えられる.(1 ≤ N ≤ 100)
  • のスコアは、1番目のレベルから最後のレベルまで順次与えられる.
  • output :
  • 分出力を何回減らすか
  • 条件:
  • プレイヤーのスコアはクリア後に獲得したスコアの和であり、このスコアをもとにオンラインランキングを行う.
  • ですが、ミスは難しい等級よりも容易な等級点数が高い場合をもたらしました.
  • 点は正数で、1点を減らして1にしなければならない.いつも答えがある場合だけを与えます.多くの正解があれば、点数を最小限に抑える方法を見つけなければならない.
  • 入力を受けるときは後の値と比較すればいいですよね?でも私たちがそう思うなら
    3
    5
    5
    5
    このような状況を正しくすることはできない.
    だから後ろから考えなければならない.
    prevは、2つの変数の比較によって値を更新し、データ配列の値を変更します.
    import sys
    
    n = int(sys.stdin.readline())
    data = []
    for i in range(n):
        data.append(int(sys.stdin.readline()))
    
    ans = 0
    
    for i in range(n - 2, -1, -1):
        prev = data[i + 1]
        now = data[i]
        if now >= prev:
            ans += now - prev + 1
            data[i] = now - now + prev - 1
    
    print(ans)