Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 356 A - Subsegment Reverse | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 18

問題概要

正整数  N, L, R が与えられる。長さ  N の数列  A = (1, 2, \cdots, N) に対し、  L 項目から  R 項目までを逆順にした数列を出力せよ。

制約

  • 入力はすべて整数。
  •  1 \leq L \leq R \leq N \leq 100

考察

配列を逆順にするといえば、 C++ ではreverse関数だろう。この第一引数と第二引数にそれぞれ始点と終点を与えてやればよいのだが、開区間で指定することに注意。

また、iotaという関数を使うことで、 A を簡単に作成することができる。

cpprefjp.github.io


コード

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

#define all(x) (x).begin(), (x).end()

// ======================================== //

int main()
{
    int N, L, R;
    cin >> N >> L >> R;

    vector<int> A(N);
    iota(all(A), 1);
    reverse(A.begin() + L - 1, A.begin() + R);

    for (auto a : A)
        cout << a << " ";
    cout << endl;
}

atcoder.jp\

実装時間: 5分以内