码迷,mamicode.com
首页 > 其他好文 > 详细

STL之priority_queue3

时间:2018-04-05 21:05:22      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:相同   code   strong   while   顺序   nal   space   iostream   font   

描述

使用STL中的优先队列,将n个点按照横坐标从小到大顺序排序,如果横坐标相同,按照纵坐标从小到大排序。

部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

 

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        Input();
        while(!qu.empty())
        {
            Point p = qu.top();
            cout<<p.x<<" "<<p.y<<endl;
            qu.pop();
        }
    }
    return 0;
}

输入

输入数据有多组,第一行为t,接下来有t组数据。

每组的第一行为正整数n,接下来有n行,每行一个点,包含横坐标和纵坐标,均为整数。

输出

每组输出排序后的所有点,每行一个点。

样例输入

 2
3
3 2
2 3
4 1
4
1 2
3 3
1 1
3 2

样例输出

2 3
3 2
4 1
1 1
1 2
3 2
3 3

#include <iostream>
#include <queue>
#include <vector>
#include <functional>
#include <deque>
using namespace std;
typedef  struct Point {
    int x;
    int y;
    bool operator>(const Point &p) const
    {
        if(x!=p.x)
        return x>p.x;
        return y>p.y;
    }
}Point;
priority_queue< Point,vector<Point>,greater<Point> > qu;
void Input()
{
    Point p;
    int n;
    cin>>n;
    while(n--)
    {
        cin>>p.x>>p.y;
        qu.push(p);
    }    
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        Input();
        while(!qu.empty())
        {
            Point p = qu.top();
            cout<<p.x<<" "<<p.y<<endl;
            qu.pop();
        }
    }
    return 0;
}

 

 

STL之priority_queue3

标签:相同   code   strong   while   顺序   nal   space   iostream   font   

原文地址:https://www.cnblogs.com/baobao2201128470/p/8724123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!