• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

74.최소힙(우선순위 큐)

21.12.23 20:50 작성 조회수 100

0

#include<stdio.h>

#include<queue>

using namespace std;

int main(){

priority_queue<int> q;

int x;

while(true){

scanf("%d",&x);

if(x==-1) break;

if(x==0&&!q.empty()){

printf("this==%d\n",-q.top());

q.pop();

}

if(x==0&&q.empty()) printf("-1\n");

else q.push(-x);

}

return 0;

 

저가 작성한 코드를 실행시키면 3 5 2이 아닌 3 0 0이 나옵니다. * input(5 3 6 0 5 0 2 4 0 -1)

하지만 if(x==0&&q.empty()) printf("-1\n"); -> else if(x==0&&q.empty()) printf("-1\n");

로 수정하면 답이 정상적으로 나옵니다.

계속 고민해도 원인을 아직까지 찾지 못해서 도움을 청합니다.

 

}

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!