A - 名刺交換
時間制限 : 2sec / スタック制限 : 10MB / メモリ制限 : 64MB問題文
青木君は就職活動をおこなっている大学生で、名刺を N 枚持っています。これから M 日間の就職活動を予定しており、 i 日目には名刺を ci 枚消費することがわかっています。
就職活動を行うにあたり、名刺が足りなくなると非常に困ります。
そこで、青木君はそれぞれの日のはじめに名刺の所持枚数を確認し、
A 枚以下ならば B 枚名刺を補充することにしました。
B 枚補充しても A 枚以下にしかならないような場合でも、それ以上の補充はできません。
最初から持っている N 枚とこのような補充で、就職活動の最後の日まで乗りきれるかどうか判定してください。
もし、足りなくなる場合は、その日付を青木君に教えてあげてください。
入力
入力は以下の形式で標準入力から与えられる。N M A B1 行目に N , M , A , B が半角スペースで区切られて与えられる。
c1
c2
:
:
cM
N は持っている名刺の枚数で 1≦N≦1,000 を満たす。
M は就職活動の日数で 0≦M≦100 を満たす。
A は名刺を補充するタイミングの枚数を示す数で 0≦A≦1,000 を満たす。
B は補充する名刺の枚数で 0≦B≦1,000 を満たす。
N , M , A , B は全て整数である。
2 行目から M+1 行目までの M 行間で、名刺を配る枚数がそれぞれ与えられる。
ci は i(1≦i≦M) 日目に配る名刺の枚数を表す整数で 0≦ci≦1,000 を満たす。
出力
就職活動の最後の日まで乗り切ることができればcompleteと出力すること。もし、名刺を配りきってしまった場合は、足りなくなった日の日付を出力すること。
出力は標準出力におこない、末尾には改行をいれること。
出典
A: 名刺交換 - AtCoder Regular Contest #010 | AtCoder回答
AtCoder/arc010_1.php at master · wada811/AtCoder · GitHub<?php fscanf(STDIN, "%d %d %d %d", $num, $days, $limit, $purchase); for($i = 1; $i <= $days; $i++){ $distribute = trim(fgets(STDIN)); if($limit >= $num){ $num += $purchase; } if($num >= $distribute){ $num -= $distribute; }else{ echo $i . PHP_EOL; exit(); } } echo 'complete' . PHP_EOL; ?>補充チェックして配布チェックして出力するだけの簡単な問題。