Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 368 B - Decrease 2 max elements | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 56

問題概要

長さ  N の正整数列  A が与えられる。  A の要素の中で正の数の個数が1つ以下になるまで以下の操作を繰り返すとき、その操作回数を求めよ。

  • 操作 :
    •  A を降順に並び替え、  A_1, A_2 をそれぞれ  1 減らす。

制約

  • 入力はすべて整数。
  •  2 \leq N \leq 100
  •  1 \leq A_i \leq 100

考察

問題文の通りにシミュレーションしていくだけ。  A の要素の中の正の数の個数は、ループで数えても構わない。

コード

#include <bits/stdc++.h>
using namespace std;

#define all(x) (x).begin(), (x).end()
#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

// ======================================== //

int main()
{
    int N;
    cin >> N;
    vector<int> A(N);
    rep(i, 0, N) cin >> A[i];

    int ans = 0, cnt = N;
    while (cnt > 1)
    {
        sort(all(A), greater<int>());
        A[0]--;
        A[1]--;

        if (A[0] == 0)
            cnt--;
        if (A[1] == 0)
            cnt--;

        ans++;
    }

    cout << ans << endl;
}

atcoder.jp

実装時間 : 5分