pta--1055 The World's Richest(25 分)(cmp重写&&vector)

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805421066272768

【分析】

思路:重写cmp函数,先财富值排序,然后年龄,最后姓名。定义普通数组的话会超时,所以用容器,把数据压入vector进行处理。

【代码】

#include<bits/stdc++.h>
using namespace std;
typedef struct node{
	char name[10];
	int age;
	int nw;
}node;
bool cmp(node a,node b)
{
	if(a.nw==b.nw)
	{
		return a.age!=b.age?a.age<b.age:strcmp(a.name,b.name)<0;
	}
	return a.nw>b.nw;
}
int main()
{
	int n,k;
	scanf("%d%d",&n,&k);
	vector<node>v;
	for(int i=0;i<n;i++)
	{
		node person;
		scanf("%s",person.name);
		scanf("%d%d",&person.age,&person.nw);
		v.push_back(person);
	}
	sort(v.begin(),v.end(),cmp);
	for(int ca=1;ca<=k;ca++)
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		printf("Case #%d:\n",ca);
		int cnt=0;
		int size=v.size();
		for(int i=0;i<size;i++)
		{
			if(v[i].age>=y&&v[i].age<=z)
			{
				printf("%s %d %d\n",v[i].name,v[i].age,v[i].nw);
				cnt++;
			}
			if(cnt==x)break;
		}
		if(!cnt)printf("None\n");
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/82389198
今日推荐