Official
A - Humidifier 1 Editorial
by
A - Humidifier 1 Editorial
by
MtSaka
初心者の方へ
- プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは practice contest の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
- また、プログラミングコンテストの問題に慣れていない方は、 AtCoder Beginners Selection の問題をいくつか試すことをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
この問題は時系列順に水がいくら残っているかをシミュレーションすることが求められています。
水の追加の時に、その時点での水の量はそれ以前に最後に水を追加した時からの経過時間とその水の追加後の水の量から計算できます。具体的には、水の残量は \(0\) リットル未満にならないことに注意して、\(V\) リットルある時から \(T\) 単位時間経過した時点で水は \(\max(0,V-T)\) リットルです。
この処理を時系列順に計算することで水の量をシミュレーションすることができます。
実装例(C++):
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int volume = 0;
int now = 0; //直前の水の追加の時刻 (最初は0とする)
for (int i = 0; i < n; ++i) {
int t, v;
cin >> t >> v;
volume -= (t - now); //前の水の追加からの経過時間
volume = max(volume, 0);
volume += v; //水の追加
now = t;
}
cout << volume << endl;
}
posted:
last update: