公式
A - 温度センサーの点検 / Inspection of Temperature Sensors 解説
by
A - 温度センサーの点検 / Inspection of Temperature Sensors 解説
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは 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 入門用コンテンツです。
この問題は、for 文などを使って \(M _ 1,M _ 2\ldots,M _ N\) の値を計算し、それらの最大値を求めることで解くことができます。
\(A _ 0=A _ {N+1}=0\) を番兵として追加しておくことで、\(M _ i\) を求める際の場合分けを減らすこともできます。
実装例は以下のようになります。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for (int& a : A) {
cin >> a;
}
// 先頭と末尾に 0 を追加しておく
A.emplace(begin(A));
A.emplace_back();
// M の最大値を求める
long ans = -3000000000;
for (int i = 0; i < N; ++i) {
ans = max(ans, 0L + A[i] + A[i + 1] + A[i + 2]);
}
cout << ans << endl;
return 0;
}
N = int(input())
# 先頭と末尾に 0 を追加しておく
A = [0] + list(map(int, input().split())) + [0]
# M の最大値を求める
print(max(map(sum, zip(A, A[1:], A[2:]))))
投稿日時:
最終更新:
