1055 The World's Richest

练习 专栏收录该内容
322 篇文章 0 订阅

题目

题意: 给出n个人的姓名、年龄和拥有的钱,然后进行k次查询,每次查询输出在年龄区间内的财富值的从大到小的前m个人的信息。如果财富值相同就就先输出年龄小的,如果年龄相同就把名字按照字典序排序输出

tip:排序,不能以个人信息中的任意一个作为键值,因为题目不保证个人姓名年龄钱数唯一,但保证三者完全相同

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct ss {
	string name;
	int age;
	int money;
};
bool cmp(struct ss a,struct ss b) {
	if(a.money==b.money) {
		if(a.age==b.age)
			return a.name<b.name;
		return a.age<b.age;
	}
	return a.money>b.money;
}
int main() {
	int n,m,checked[203]= {0};
	scanf("%d %d\n",&n,&m);
	vector<struct ss>ans;
	for(int i=0; i<n; ++i) {
		char name[100];
		int age,money;
		scanf("%s %d %d\n",name,&age,&money);
		ans.push_back({name,age,money});
	}
	sort(ans.begin(),ans.end(),cmp);
	for(int i=0; i<m; ++i) {
		int k,a,b,t;
		scanf("%d %d %d",&k,&a,&b);
		t=k;
		printf("Case #%d:\n",i+1);
		for(auto it=ans.begin(); it!=ans.end(); ++it) {
			if(!k)
				break;
			if((*it).age>=a&&(*it).age<=b) {
				printf("%s %d %d\n",(*it).name.c_str(),(*it).age,(*it).money);
				k--;
			}
		}
		if(t==k)
			cout<<"None\n";
	}
	return 0;
}

 

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值