\[단일 시작점 최단 경로 알고리즘으로, 시작 정점 s에서부터 다른 정점들까지의 최단 거리를 계산우선 순위 큐에 지금까지 찾아낸 해당 정점까지의 최단 거리, 정점의 번호를쌍으로 넣음 priority_queue <pair<int, int>> pq; 정점까지의
\[처음에 문제를 보고 쉬운 문제라고 생각했고 톱니바퀴의 상태를 저장하는 벡터를 만들고 옆에 있는 톱니와 맞닿는 톱니의 index를 따로 저장해서 톱니가 움직일 때마다 이 index만 계속 변경해주면 된다고 생각했다.그런데 그럴 필요 없이 deque를 이용하면 훨씬 편
queue에서 단순하게 최댓값과 최솟값만 구하면 되므로 min heap과 max heap 두 개를 만든다.push는 각 queue에 해주고 max값을 pop할 경우 max heap에서, min값을 pop할 경우 min heap에서 pop을 해준다.
문제는 위와같이 한 번에 하나의 작업만 수행할 수 있는 하드디스크에 작업이 들어왔을 때, 요청부터 종료까지 걸린 시간이 평균을 가장 줄이는 방법으로 처리하는 평균을 구하는 문제이다.priority_queue를 구현할 때 제일 첫 번째 인자는 queue에 담길 자료형,
우선순위 큐는 순서대로 기다리고 있는 자료들을 저장하는 자료 구조 라는 점에서 큐와 비슷하지만, 우선순위가 가장 높은 자료가 가장 먼저 꺼내진다는 차이가 있다.우선순위 큐는 이진 검색 트리보다 훨씬 단순한 구조로 구현할 수 있는데, 그중 대표적인 것이 heap 이라는