バイトの競プロメモ

主に競技プログラミング

AGC 006 B - Median Pyramid Easy

B - Median Pyramid Easy



解法

22のように繋がったものが中央にあれば良い。または、45のような時、隣の数がなんでも答えは4,5のどちらかになる。(中間の数がないため)それを利用して真ん中に345 のように置くと、上も同じようになる。


問題の芯
とりあえず試すべき。感覚的に中央にxを置くのが自然であり、いろいろ試せば回答できるはず。

public static void main(String[] args)
    {
        N = sc.nextInt();
        int x = sc.nextInt();

        int width = (N) * 2 - 1;
        if( x==1 || x == width){
            System.out.println("No");
            return;
        }

        if(N==2){
            System.out.println("Yes");
            System.out.println("1");
            System.out.println("2");
            System.out.println("3");
            return;
        }

        A = new int[width];

        A[N-2] = x-1;
        A[N-1] = x;
        A[N] = x+1;
        for (int i = 1,pos = 0; pos < width; )
        {
            if(i == x || i == x-1 || i==x+1){
                i++;
                continue;
            }
            if(A[pos] != 0){
                pos++;
                continue;
            }
            A[pos] = i;
            pos++;
            i++;
        }
        System.out.println("Yes");
        for (int i = 0; i < width; i++)
        {
            System.out.println(A[i]);
        }

    }