[AtCoder] キーエンス プログラミング コンテスト 2020 C – Subarray Sum
問題
方針
\( 0 \leq K \leq N \) という制約なので、この問題は簡単に解くことができます。\( A \) の \( K \) 個の要素が \( S \) を取るとき、\( N – K \) 個の要素をどのように決めれば良いかですが、\( S = 10^9 \) のとき、\( N – K \) 個の部分列の和が \( 10^9 \) にならなければよいので、\( 1 \) としておきます。一方で、\( S \neq 10^9 \) のとき、\( N – K \) 個の値を \( S + 1 \) とすれば良いです。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int N, K, S; cin >> N >> K >> S; int A[N]{}; int v = 1000000000; for (int i = 0; i < K; i++) { A[i] = S; } if (S == v) { for (int i = K; i < N; i++) { A[i] = 1; } } else { for (int i = K; i < N; i++) { A[i] = v; } } for (int i = 0; i < N; i++) { if (i == N - 1) { cout << A[i] << "\n"; } else { cout << A[i] << " "; } } return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません