페이지

2413번: 비슷한 순열

https://www.acmicpc.net/problem/2413


#include<stdio.h>
int data[50010], check[50010], rink[50010];
int main()
{
    int i, j, n, temp;
    scanf("%d", &n);
    for (i = 0; i<n; i++)
    {
        scanf("%d", &data[i]);
        rink[data[i]] = i;
    }
    for (i = 0; i<n; i++)
    {
        if (data[i] != 1 && check[data[i]] == 0 && check[data[rink[data[i] - 1]]] == 0)
        {
            check[data[i]] = 1;
            check[data[rink[data[i] - 1]]] = 1;
            temp = data[rink[data[i] - 1]];
            data[rink[data[i] - 1]] = data[i];
            data[i] = temp;
        }
        else
        {
            check[data[i]] = 1;
        }
    }
    for (i = 0; i<n; i++)
        printf("%d ", data[i]);
    return 0;
}

댓글 없음 :

댓글 쓰기