Official

A - To Be Saikyo Editorial by yuto1115

解説

AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


まず、\(P_2,P_3,\dots,P_N\) の最大値を求めます。これを \(M\) とおきます。このとき、人 \(1\) が最強になる条件は、\(P_1\)\(M\) より大きくなることです。よって、答えは \(M + 1 - P_1\)\(0\) のうち大きい方になります。単に \(M + 1 - P_1\) を出力するだけだと、入力の時点で既に人 \(1\) が最強のとき負の値を 出力してしまうので注意してください。

詳しい実装方法は下記の実装例を参考にしてください。

実装例 (C++) :

#include<bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> p(n);
    for (int i = 0; i < n; i++) {
        cin >> p[i];
    }
    int m = 0;
    for (int i = 1; i < n; i++) {
        m = max(m, p[i]);
    }
    cout << max(0, m + 1 - p[0]) << endl;
}

実装例 (Python) :

n = int(input())
p = list(map(int, input().split()))
m = 0
for i in range(1, n):
    m = max(m, p[i])
print(max(0, m + 1 - p[0]))

posted:
last update: