Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- terminal
- JanusGateway
- python
- 겨울 부산
- JanusWebRTC
- mp4fpsmod
- k8s #kubernetes #쿠버네티스
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- PytestPluginManager
- 코루틴 빌더
- pytest
- Spring Batch
- 자원부족
- preemption #
- table not found
- PersistenceContext
- JanusWebRTCGateway
- taint
- 깡돼후
- tolerated
- vfr video
- 코루틴 컨텍스트
- 오블완
- JanusWebRTCServer
- Value too long for column
- kotlin
- 달인막창
- 개성국밥
- 티스토리챌린지
- VARCHAR (1)
Archives
너와 나의 스토리
[BOJ] 11279 최대 힙 - heap(priority_queue) 구현 본문
반응형
문제: https://www.acmicpc.net/problem/11279
소스코드:
STL priority_queue 사용
...더보기
#include <iostream>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;
int n;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
priority_queue<int, vector<int>> pq;
while (n--) {
int x;
cin >> x;
if (x==0) {
if (pq.empty()) {
cout << "0\n";
}
else {
cout << pq.top() << '\n';
pq.pop();
}
}
else pq.push(x);
}
return 0;
}
STL 미사용
...더보기
#include <iostream>
using namespace std;
int n,heap[100002],tail=1;
void swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}
void push(int num) {
heap[tail] = num;
int p = tail / 2;
int cur = tail;
while (p > 0) {
if (heap[p] < heap[cur]) {
swap(heap[p], heap[cur]);
p /= 2;
cur /= 2;
}
else break;
}
tail++;
}
void pop() {
if (tail == 1) {
cout << "0\n";
return;
}
cout << heap[1] << '\n';
heap[1] = heap[--tail];
int p = 1;
while (1) {
int left = p * 2;
int right = p * 2 + 1;
if (right<=tail) {
if (heap[left] < heap[right]) {
if (heap[right] > heap[p]) {
swap(heap[right] , heap[p]);
p = p * 2+1;
}
else break;
}
else {
if (heap[left] > heap[p]) {
swap(heap[left], heap[p]);
p = p * 2;
}
else break;
}
}
else if (left <= tail) {
if (heap[left] > heap[p]) {
swap(heap[left], heap[p]);
p = p * 2;
}
else break;
}
else break;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
while (n--) {
int x;
cin >> x;
if (x==0) {
pop();
}
else push(x);
}
return 0;
}
<- STL 사용
<- STL 미사용
반응형
'Algorithm > 자료구조 구현' 카테고리의 다른 글
[BOJ] 1158 요세푸스 문제 - 이중 연결 리스트(Doubly Linked List), 큐(Queue) 구현 (0) | 2020.02.19 |
---|---|
[BOJ] 2164 카드 2 - deque 구현 (0) | 2019.09.22 |
[BOJ] 10773 제로 (0) | 2019.09.22 |
[BOJ] 2252 줄 세우기 [리스트, 큐, 이중 벡터 구현] (0) | 2019.08.30 |
[BOJ] 4195 친구 네트워크 [map 구현] (0) | 2019.08.29 |
Comments