문제 : https://www.acmicpc.net/problem/16288
[알고리즘풀이]
A[] : 입국장을 빠져나가는 순서를 담은 배열.
k : 여권 심사 창구의 수.
C : A배열에서 순증가부분수열의 수.
라고 한다면 k 가 C보다 크거나 같으면 항상 원하는 순서대로 입국장을 빠져나갈 수 있다.
ex)
A[] : 4 1 3 2 5 6 8 9 7 10 라고 하자.
A배열의 순증가부분수열은 4 - 5 - 6 - 8 - 9 - 10 / 1 - 3 - 7 / 2 로 총 3개이다.
즉, 창구가 3개 이상이면 각 창구마다 위의 수열대로 배치를 할 수 있다.
#include<iostream>
using namespace std;
bool check[101];
int A[100];
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++)
cin >> A[i];
int c = 0;
for (int i = 0; i < n; i++) {
if (check[A[i]] == false) {
c++;
int last = A[i];
for (int j = i; j < n; j++) {
if (last <= A[j] && check[A[j]] == false) {
last = A[j];
check[A[j]] = true;
}
}
}
}
if (c <= k)
cout << "YES\n";
else
cout << "NO\n";
return 0;
}
'Problem Solving > ICPC' 카테고리의 다른 글
[ICPC][BOJ] 16287 - Parcel (0) | 2019.09.28 |
---|---|
[ICPC][BOJ] 16282 - Black Chain (0) | 2019.09.28 |
[ICPC][BOJ] 16283 - Farm (0) | 2019.09.28 |
[ICPC][BOJ] 13328 - Message Passing (0) | 2019.09.23 |
[ICPC][BOJ] 13333 - 'Q-Index' (0) | 2019.09.23 |