Official
B - バスツアー / Bus Tour Editorial
by
B - バスツアー / Bus Tour Editorial
by
MMNMM
バスの移動にあわせて乗客の人数をシミュレーションすることで、この問題を解くことができます。 「\(B _ i\) 人まで降りる」という処理は、if 文や max/min などの関数を使うとよいでしょう。
最終行だけ \(B\) が入力されないことに気を付けてください。
実装例は以下のようになります。
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
long now = 0;
for (int i = 0; i < N; ++i) {
if (i + 1 < N) { // 最後の停留所より前なら
int A, B;
cin >> A >> B; // 乗ったり降りたりする
now += A;
now -= min<long>(now, B);
} else { // 最後の停留所では
int A;
cin >> A;
now += A; // 乗るだけ
}
}
// 答えを出力
cout << now << endl;
return 0;
}
N = int(input())
ans = 0
for i in range(N):
if i + 1 == N: # 最後の停留所では
A = int(input())
ans += A # 乗るだけ
else: # それより前なら
A, B = map(int, input().split()) # 乗ったり降りたりする
ans += A
ans -= min(ans, B)
# 答えを出力
print(ans)
posted:
last update:
