https://www.acmicpc.net/problem/22858
22858번: 원상 복구 (small)
P1,P2,⋯,PN의 수가 적혀 있는 N개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 수열 D1,D2,⋯,Di,⋯,DN이 있다. 이때 각 i에 대해 Di번째 카드를 i번째로 가져오는
www.acmicpc.net
규칙에 따라 섞인 수열의 맨 처음 형태를 구하면 된다.
Pi에서 i=Di인 경우 Si가 된다.
즉, P[D[i]]=S[i]이다. 이를 K번 반복해주면 된다. NK≤107이기에 전부 돌려봐도 해결 가능하다.
int N, K, S[MAXN], D[MAXN], P[MAXN];
int main(void) {
fastio;
cin >> N >> K;
for (int i = 1; i <= N; i++) cin >> S[i];
for (int i = 1; i <= N; i++) cin >> D[i];
while (K--) {
for (int i = 1; i <= N; i++) P[D[i]] = S[i];
for (int i = 1; i <= N; i++) S[i] = P[i];
}
for (int i = 1; i <= N; i++) cout << P[i] << ' ';
return 0;
}
'알고리즘' 카테고리의 다른 글
[BOJ 17952] 과제는 끝나지 않아! (0) | 2024.04.29 |
---|---|
[BOJ 22862] 가장 긴 짝수 연속한 부분 수열 (large) (1) | 2024.04.02 |
[BOJ 11508] 2+1 세일 (0) | 2024.04.01 |
[BOJ 9660] 돌 게임 6 (0) | 2024.04.01 |
[BOJ 2056] 작업 (0) | 2024.03.29 |