#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; }
2413번: 비슷한 순열
https://www.acmicpc.net/problem/2413
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기