けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 278 A - Shift (7Q, 灰色, 100 点)

問題文の操作を上手に言い換えて、for 文で処理できる形にしよう!

問題概要

長さ  N の数列  A_{1}, A_{2}, \dots, A_{N} に対して、以下の操作を  K 回実施してできる数列を出力せよ。

  • 数列の先頭の数値を削除し、末尾に 0 を挿入する

制約

  •  1 \le N, K \le 100

考えたこと

C++ では、数列は vector<int> 型で扱うとよい。このとき、数列 A の先頭の要素を削除する処理は

  • A.erase(A.begin())

と書ける。また、数列 A の末尾に 0 を挿入する処理は

  • A.push_back(0)

と書ける。これらの操作を  K 回繰り返せば良い。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> A(N);
    for (int i = 0; i < N; i++) cin >> A[i];

    for (int i = 0; i < K; i++) {
        A.erase(A.begin());
        A.push_back(0);
    }
    for (int i = 0; i < A.size(); i++) cout << A[i] << " ";
    cout << endl;
}