HDU1177 "Accepted today?"

本文提供了一道来自PKU ACM在线评测系统的题目解析,该题编号为1177。通过C++代码实现了解题逻辑,包括读取参赛者的解题数量和时间,并依据解题数目及时间进行排名,最终根据排名给出不同的奖项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1177

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> #include < iostream >
#include
< algorithm >
#include
< string >
using namespace std;

const int MAX_SIZE = 150 ;

struct score
{
int problems; // 解出的题数
string time; // 用时
bool isTarget; // 是否目标
};

struct scorescores[MAX_SIZE];
int N,G,S,C,M,P;

bool compare( const score & s1, const score & s2)
{
if (s1.problems > s2.problems)
{
return true ;
}
else if (s1.problems < s2.problems)
{
return false ;
}
else
{
// 题数相同,比较用时
if (s1.time.compare(s2.time) > 0 )
{
return false ;
}
else if (s1.time.compare(s2.time) < 0 )
{
return true ;
}
}
}

int findTargetPos()
{
// 找到排序后的目标位置
int pos = - 1 ;
for ( int i = 0 ;i < N; ++ i)
{
if (scores[i].isTarget == true )
{
pos
= i;
break ;
}
}
return pos + 1 ;
}

int main()
{
int i,pos;
while (cin >> N >> G >> S >> C >> M)
{
if (N == 0 && G == 0 && S == 0 && C == 0 && M == 0 ) break ;
for (i = 0 ;i < N; ++ i)
{
cin
>> scores[i].problems >> scores[i].time;
scores[i].isTarget
= false ;
if (i == M - 1 )
{
scores[i].isTarget
= true ;
}
}
sort(scores,scores
+ N,compare);
pos
= findTargetPos();
if (pos <= G)
{
cout
<< " Acceptedtoday?I'vegotagoldenmedal:) " << endl;
}
else if (pos <= G + S)
{
cout
<< " Acceptedtoday?I'vegotasilvermedal:) " << endl;
}
else if (pos <= G + S + C)
{
cout
<< " Acceptedtoday?I'vegotacoppermedal:) " << endl;
}
else
{
cout
<< " Acceptedtoday?I'vegotanhonormentioned:) " << endl;
}
}
return 0 ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值