Official

A - 12435 Editorial by sounansya


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


まず、操作は以下の \(4\) 通りに限られます。

  • \(A_1\)\(A_2\) を入れ替える。
  • \(A_2\)\(A_3\) を入れ替える。
  • \(A_3\)\(A_4\) を入れ替える。
  • \(A_4\)\(A_5\) を入れ替える。

よって、この \(4\) つの操作をそれぞれ実際に試してみて、どれか \(1\) つで \(A\) が昇順になれば答えは Yes 、そうでなければ答えは No となります。

実装例 (Python3)

a = list(map(int, input().split()))

b = a.copy()
b[0], b[1] = b[1], b[0]
if b == [1, 2, 3, 4, 5]:
    print("Yes")
    exit()

b = a.copy()
b[1], b[2] = b[2], b[1]
if b == [1, 2, 3, 4, 5]:
    print("Yes")
    exit()

b = a.copy()
b[2], b[3] = b[3], b[2]
if b == [1, 2, 3, 4, 5]:
    print("Yes")
    exit()

b = a.copy()
b[3], b[4] = b[4], b[3]
if b == [1, 2, 3, 4, 5]:
    print("Yes")
    exit()

print("No")

このプログラムは for 文を用いることでより簡潔に書くことができます。

実装例(Python3)

a = list(map(int, input().split()))
for i in range(4):
    b = a.copy()
    b[i], b[i + 1] = b[i + 1], b[i]
    if b == [1, 2, 3, 4, 5]:
        print("Yes")
        exit()
print("No")

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> a(5);
    for (int &i : a)
        cin >> i;
    vector<int> ans = {1, 2, 3, 4, 5};
    for (int i = 0; i < 4; i++)
    {
        vector<int> b = a;
        swap(b[i], b[i + 1]);
        if (b == ans)
        {
            cout << "Yes" << endl;
            return 0;
        }
    }
    cout << "No" << endl;
    return 0;
}

posted:
last update: