Official

A - Sanitize Hands Editorial by mechanicalpenciI


\(1\) 人目から順に消毒液の残量をシミュレーションしてくことで答えを求めることができます。
\(M\) から始めて、\(H_1,H_2,\ldots,H_N\) を順に引いていきます。 \(0\) 未満になることがなければ全員が手を消毒することができるので、答えは \(N\) となります。そうでなく、\(H_i\) を引いた時に初めて \(0\) 未満になったとき、答えは \(i-1\) となります。

よって、答えを求めることができました。
判定条件の不等式に等号をつけるかどうかについて、ある宇宙人が自身の手をすべて消毒した時点でちょうど消毒液がなくなる場合に注意してください。

c++ による実装例:

#include <bits/stdc++.h>

using namespace std;

int main() {
	int n,m,h,ans=0;
	
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>h;
		m-=h;
		if(m>=0)ans++;
	}

	cout<<ans<<endl;
	return 0;
}

Python による実装例:

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

posted:
last update: