알고리즘 문제/BOJ
17505번 링고와 순열
parkit
2019. 9. 30. 15:48
728x90
반응형
https://www.acmicpc.net/problem/17505
해당 인덱스에 대한 값이
뒤에 있는 값보다 큰 것의 개수를 활용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <bits/stdc++.h> using namespace std; vector<int> v; long long N, K, Size, max_index; int main(void) { cin.tie(0); cin >> N >> K; Size = N; max_index = N - 1; for (int i = 1; i <= N; i++) v.push_back(i); if ((N * (N - 1)) / 2 == K) for (int i = (int)N; i >= 1; i--) printf("%d ", i); else if (K == 0) for (int i = 1; i <= (int)N; i++) printf("%d ", i); else { while (true) { if (Size <= K) { printf("%d ", v[max_index--]); K = K - (--Size); } else { v.insert(v.begin() + Size - K - 1, v[max_index]); for (int i = 0; i <= max_index; i++) printf("%d ", v[i]); break; } } } printf("\n"); return 0; } | cs |
728x90
반응형