Yuulis.log

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

【AtCoder】ABC 357 A - Sanitize Hands | 茶コーダーが解くAtCoder

atcoder.jp

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

問題概要

ちょうど  M 本の手を消毒することができる消毒液の入ったボトルがある。これから  N 人の宇宙人が手の消毒をしにやってくるが、  i 人目の宇宙人は手を  H_i 本持っており、それぞれ自身のすべての手を1回ずつ消毒したいと考えている。このとき、何人目の宇宙人までがすべての手を消毒できるか求めよ。ただし、ある宇宙人が消毒を始める時点で自身のすべての手を消毒する分の消毒液が残っていなかったとしても、その宇宙人はその消毒液を使い切ってしまうとする。

制約

  • 入力はすべて整数。
  •  1 \leq N, M, H_i \leq 100

考察

1人目から順に消毒できる手の残量をシミュレーションしていく。  M から  H_i  \: (1 \leq i \leq N) を順に引いていき、カウンターを増やしていく。  M < 0 となった段階で処理を打ち切って、その時点のカウンターを出力する。

コード

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

#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

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

int main()
{
    int N, M;
    cin >> N >> M;

    int ans = 0;
    rep(i, 0, N)
    {
        int H;
        cin >> H;
        M -= H;
        if (M < 0)
        {
            cout << ans << endl;
            return 0;
        }
        else
        {
            ans++;
        }
    }

    cout << ans << endl;
}

atcoder.jp

実装時間: 5分以内