小明的账单

小明的账单

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1372
时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

小明在一次聚会中,不慎遗失了自己的钱包,在接下来的日子,面对小明的将是一系列的补卡手续和堆积的账单… 在小明的百般恳求下,老板最终同意延缓账单的支付时间。可老板又提出,必须从目前还没有支付的所有账单中选出面额最大和最小的两张,并把他们付清。还没有支付的账单会被保留到下一天。 请你帮他计算出支付的顺序。

【输入】

第1行:一个正整数N(N≤15,000),表示小明补办银联卡总共的天数。

第2行到第N+1 行:每一行描述一天中收到的帐单。先是一个非负整数M<=100,表示当天收到的账单数,后跟M个正整数(都小于1,000,000,000),表示每张帐单的面额。

输入数据保证每天都可以支付两张帐单。

【输出】

输出共N 行,每行两个用空格分隔的整数,分别表示当天支付的面额最小和最大的支票的面额。

【输入样例】

4
3 3 6 5
2 8 2
3 7 1 7
0

【输出样例】

3 6
2 8
1 7
5 7
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
priority_queue<int ,vector<int>,greater<int> > s;
priority_queue<int> b;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int t;
        scanf("%d",&t);
        for(int i=1;i<=t;i++)
        {
            int a;
            scanf("%d",&a);
            s.push(a);
            b.push(a);
        }
        printf("%d %d
",s.top(),b.top());
        s.pop();b.pop();
    }
    return 0;
}
原文地址:https://www.cnblogs.com/EdSheeran/p/8016854.html