티스토리 뷰
문제
16566번: 카드 게임
첫째 줄에 세 개의 자연수 N, M, K가 주어진다. (1 ≤ M ≤ N ≤ 4,000,000, 1 ≤ K ≤ min(M, 10,000)) 다음 줄에 카드의 번호를 나타내는 M개의 자연수가 주어진다. 각각의 수들은 1 이상이고 N 이하이며 서로
www.acmicpc.net
풀이
낼 수 있는 카드를 정렬해둔 후, upperbound를 통해 낼 카드 번호를 바로 구할 수 있을 것 같지만 낸 카드는 버리기에 사용한 카드의 유무를 저장하는 배열을 사용해 항상 사용하지 않은 카드를 내는 식으로 해결할 수 있습니다. $O((m + k)logm)$
코드
#include <bits/stdc++.h>
using namespace std;
int n, m, k, x, idx;
vector<int> v;
bool c[4000001];
int main() {
cin.tie(NULL); cout.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> m >> k;
v.resize(m);
for (int& i : v) cin >> i;
sort(v.begin(), v.end());
while (k--) {
cin >> x;
idx = upper_bound(v.begin(), v.end(), x) - v.begin();
while (idx <= n && c[idx]) idx++;
cout << v[idx] << "\n";
c[idx] = 1;
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[백준 13018] 특이한 수열 (0) | 2021.07.02 |
---|---|
[백준 7812] 중앙 트리 (0) | 2021.06.21 |
[백준 7045] Tree Cutting (0) | 2021.03.17 |
[백준 5867] Scrambled Letters (0) | 2021.02.07 |
[백준 20438] 출석체크 (0) | 2021.01.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동적계획법
- 카카오 2차코딩테스트
- BFS
- 프로그래머스 월간코드챌린지
- Kakaoblind
- 유니온파인드
- 누적합
- 위클리 챌린지
- 카카오 인턴십
- 카카오 2021
- DP
- 2022 카카오블라인드
- 2022 카카오 블라인드 코딩테스트
- 2021 KAKAO BLIND
- 프로그래머스 위클리 9주차
- 시뮬레이션
- 이분탐색
- 2020 KAKAO BLIND RECRUITMENT
- 프로그래머스
- 투포인터
- 카카오 표 편집
- 구현
- 백준
- 트리
- 2021 카카오 블라인드
- 2022 KAKAO BLIND RECRUITMENT
- 파싱
- 게임이론
- 표 편집
- 카카오 2020 인턴십
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함