ぐってぃのプログラミング日記

競技プログラミングやIT関係の記事を書いていくよ

AtCoder Beginners Contest 060 C-Sentou

問題

beta.atcoder.jp


T秒間以内にスイッチが押されるときにどう処理するかがポイント。

考察

最後の一人は必ずT秒加算されるので、答えはT以上になる。
ポイントは前の人がスイッチを押してからT秒以内かどうか判定すること。
T秒以内なら前の人の差分を、それ以外ならT秒を加算すればよい。

コード

#include <iostream>
#include <algorithm>

using namespace std;
#define ll long long
ll t[200050] = {};
int main()
{
	ll n, T;
	cin >> n >> T;

	for (int i = 0; i < n; i++)
	{
		cin >> t[i];
	}

	ll ans = T;

	for (int i = 1; i < n; i++)
	{
		ans += min(T, t[i] - t[i - 1]);
	}

	cout << ans << endl;

}

実装が思いつかなったのは反省・・・