1372:小明的账单

小明的账单

首先就犯了大意错误┭┮﹏┭┮,提交了下面这样的代码。
很明显,大根堆的最小值没有得到“清理”,同样小根堆的最大值也没有得到“清理”。

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;

priority_queue<int,vector<int>,greater<int>> hg;
priority_queue<int,vector<int>,less<int>>hl;

int main(){
    int n;
    cin>>n;
    while(n--){
        int m,t;
        cin>>m;
        for(int i=1;i<=m;i++){
            scanf("%d",&t);
            hg.push(t);hl.push(t);
        }
        printf("%d %d\n",hg.top(),hl.top());
        hl.pop();hg.pop();
    }
	return 0;
}

然后看了大佬的题解,STL一点不会果然不行啊!(灬ꈍ ꈍ灬)
关于multiset可参考endl大佬
注意:不用scanf/printf是过不了的。

#include<bits/stdc++.h>
using namespace std;
multiset<int> st;
int main(){
    int n;
    cin>>n;
    st.clear();
    for(int i=1;i<=n;i++){
        int m;
        scanf("%d",&m);
        for(int j=1;j<=m;j++){
            int a;
            scanf("%d",&a);
            st.insert(a);
        }
        printf("%d %d\n",*st.begin(),*(--st.end()));
        st.erase(st.begin());
        st.erase(--st.end());
    }
    return 0;
}
posted @ 2021-09-22 16:55  Rekord  阅读(409)  评论(0编辑  收藏  举报