WWX的520

时间限制:C/C++ 3秒,其他语言6秒
空间限制:C/C++ 65536K,其他语言131072K
64bit IO Format: %lld

题目描述 

520,因为谐音为我爱你,所以也被称之为表白日。

这一天,人们借机把藏在心底的洪荒之力通过表白、撒娇、传情、送礼、结婚等形式释放出来,商家也会趁势开展各类优惠促销活动,掀起一波或浪漫或虐狗的节日热浪。

这一天,也是送男朋友礼物、送女朋友礼物、送自己礼物、送亲朋好友礼物的好时机。

在520即将到来之际,wwx准备为她的女朋友购买一批礼物。于是他列出了一份礼物清单,但由于预算有限,必须删掉一种礼物。经过深思熟虑,他决定删掉价格第k高的礼物,你能帮帮他,找出是哪一种礼物吗?

输入描述:

第一行是一个整数T(1<=T<=80),表示有T组数据.
对于每一组数据,首先一行输入N(3<=N<=1000),接下来的N行每行输入一个字符串和一个整数,以空格间隔,分别作为每种礼物的名字和价格。
接下来一行输入k,表示要删去第k(1<=<=N)高的礼物
礼物的名字的长度不超过30,礼物的价格不超过1000,且均为整数。

输出描述:

对于每组输入数据,依次输出它的组号和要删去的礼物的名字和价格,以空格间隔。
若两种商品的价格相同,则比较礼物名字的字典序大小。即:两种礼物的价格相同时,字典序大者若为第k高,字典序小者则为第k+1高。
示例1

输入

2
3
Apple 18
Book 30
Milk 8000
3
4
Apple 300
Bananas  200
Bracelet 200
Candy 200
3

输出

#1: Apple 18
#2: Bracelet 200

备注:

1.
可用strcmp(s1,s2)函数进行字符串的比较。
2.
对于样例一中第二组数据:Apple 300是价格第一大,Candy 200是价格第二高,Bracelet
200是价格第三大。

题解:结构体+排序

#include<bits/stdc++.h>
using namespace std;
struct node
{
    string name;
    int price;
} q[1010];
bool cmp(node a,node b)
{
    if(a.price==b.price)
        return a.name>b.name;
    return a.price>b.price;
}
int main()
{
    int t,n,k,cnt=0;
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=0; i<n; i++)
            cin>>q[i].name>>q[i].price;
        sort(q,q+n,cmp);
        cin>>k;
        cout<<"#"<<++cnt<<": "<<q[k-1].name<<" "<<q[k-1].price<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/memory_qianxiao/article/details/80341250
520