[コードテストC+]最小ヒップ


今日の質問


https://www.acmicpc.net/problem/1927

最小ヒップ



方法

  • 優先キュー出力の最小数を使用すればよい.
  • 私の答え

    #include <iostream>
    #include <vector>
    #include <queue>
    #pragma warning(disable: 4996)
    using namespace std;
    
    const int MAX = 100000;
    int n;
    int ar[MAX];
    
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        
        scanf("%d", &n);
        int c;
        priority_queue<int, vector<int>, greater<int>> q;
        for(int i=0;i<n;i++){
            scanf("%d", &c);
            if(c == 0){
                if(q.size() == 0)
                    printf("0\n");
                else{
                    printf("%d\n", q.top());
                    q.pop();
                }
            }else{
                q.push(c);
            }
        }
        return 0;
    }

    別の解釈


    学ぶべきところ

  • cin、coutとして使うのは、本当にだめなのでscanf,prinfに変えました.
  • の突起がある鼻釘を見るときはscanfを使います.