4490: 比赛的获奖规则

#include<bits/stdc++.h>
using namespace std;
struct c{
	string school,team;
	int solved,time;
};
c cc[200010];
bool cmp(c u,c v){
	if(u.solved==v.solved)return u.time<v.time;
	return u.solved>v.solved;
}
int main (){
	int n=0,s,t,cnt1=0,f1,f2,n1;
	string s1,s2,d;
	scanf("%d",&n1);
	for(int i=1;i<=n1;i++){
		cin>>s1>>s2;
		scanf("%d",&s);
		scanf("%d",&t);
		if(s2[s2.size()-1]!='*'&&s!=0){
			cnt1++;
			cc[cnt1].school=s1;
			cc[cnt1].team=s2;
			cc[cnt1].solved=s;
			cc[cnt1].time=t;
			n++;
		}
	}
	cin>>d;
	
	int gold=n*10/100;
	if(n*10%100!=0)gold++;
	int silver=n*30/100;
	if(n*30%100!=0)silver++;
	silver-=gold;
	int bronze=n*60/100;
	if(n*60%100!=0)bronze++;
	bronze-=silver+gold;
	sort(cc+1,cc+cnt1+1,cmp);
	if(d=="gold"){
		cout<<gold<<endl;
		f1=1;
		f2=gold;
	}else if(d=="silver"){
		cout<<silver<<endl;
		f1=gold+1;
		f2=gold+silver;
	}else {
		cout<<bronze<<endl;
		f1=gold+silver+1;
		f2=gold+silver+bronze;
	}	
	for(int i=f1;i<=f2;i++){
		cout<<cc[i].school<<" "<<cc[i].team<<" "<<cc[i].solved<<" "<<cc[i].time<<endl;
	}
	return 0;
}

题目描述

## 题目描述

33dai举办了一个趣味的编程比赛,趣味编程比赛的规则是组队制的。TooY0ung帮助33dai制定了奖项的分配规则: 关于获金、银、铜奖队伍具体数量的计算方法 设有效参赛队伍数为 A 支,则: 获金(goldgold)奖队伍数为:J = (A10%)结果上取整; 获银(silversilver)奖队伍数为:Y = (A30%)结果上取整 – J; 获铜(bronzebronze)奖队伍数为:T = (A*60%)结果上取整 – Y - J; 有效参赛队伍定义为至少提交通过 1 个题目的正式参赛队伍,非正式参赛队伍为打星队伍,其标志为队伍名最后一个字符为 * 现在你想知道一场比赛的获奖情况 排名细则 所有正式参赛的参赛队按照解题数多少进行排名,解题数多的排名在前;若解题数相同,再比较总用时,总用时少的排名在前。

输入格式

第一行两个整数 nn。表示参赛队伍数量 下面 nn 行,每行包含两个字符串 school(学校)、team(队伍名),除打星队伍外,所有参赛队伍最后一个字符均不为∗)school(学校)、team(队伍名),除打星队伍外,所有参赛队伍最后一个字符均不为∗),两个整数 solved(通过题目数),time(总用时)solved(通过题目数),time(总用时), 保证 school,teamschool,team 中只出现小写英文字母以及 * 。保证 timetime 各不相同。 最后一行包括一个字符串ss表示查看金牌或者银牌或者铜牌的获奖情况,ss只有gold、silver、bronzegold、silver、bronze三种情况

输出格式

第一行输出获得ss奖的总人数xx 接下来xx行输出获得ss奖的队伍以及队伍信息(学校、队伍名、通过题目数、总用时)。

输入1:

15
nanjingdaxue chuochuorangchuochuobie 9 1148
qinghuadaxue sangedinglia 11 1340
beijingdaxue nishizi 10 780
qinghuadaxue  miaomiaomiaomiaomiaomiaomiao 10 1126
xianjiaotongdaxue chabuduodele 10 1211
nanjingyoudiandaxue Cirtrus 10 1361
zhejiangdaxue SolitaryDream 8 788
tengxun tengxundaibiaodui* 8 842
kuangshi kuangshidaibiaodui* 8 1251
changchunligongdaxue dlrowollehstup 3 324
beijingdaxue chongshengzhiwoshicaigou 12 1036
beijingdaxue daidainiao 12 1230
qinghuadaxue sangedingxiang 12 2030
beijingdaxue chongshengcaigou 11 1523
beijingligongdaxue ddlzhanshen 10 1623
gold

输出1:

2
beijingdaxue chongshengzhiwoshicaigou 12 1036
beijingdaxue daidainiao 12 1230

数据规模与约定

对于 100%100% 的数据,1≤n≤2∗1051≤n≤2∗105, 1≤∣school∣,∣team∣≤301≤∣school∣,∣team∣≤30,∣school∣表示字符串长度∣school∣表示字符串长度 0≤solved≤13,0≤time≤231−10≤solved≤13,0≤time≤231−1

  • 子任务 1(30 分):所有的队伍保证解题数不相同且按照解题数从大到小给出。
  • 子任务 2(30 分):保证字符串ss是goldgold
  • 子任务 3(40 分):没有特殊限制

样例输入content_copy


样例输出content_copy


提示/说明

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值