HDU1177 "Accepted today?"

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

#include  < iostream >
#include 
< algorithm >
#include 
< string >
using   namespace  std;

const   int  MAX_SIZE  =   150 ;

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

struct  score scores[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 
<< " Accepted today? I've got a golden medal :) "   <<  endl;
        }
        
else   if  (pos  <=  G  +  S)
        {
            cout 
<< " Accepted today? I've got a silver medal :) "   <<  endl;
        }
        
else   if  (pos  <=  G  +  S  +  C)
        {
            cout 
<< " Accepted today? I've got a copper medal :) "   <<  endl;
        }
        
else
        {
            cout 
<<   " Accepted today? I've got an honor mentioned :) "   <<  endl;
        }
    }
    
return   0 ;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值