题目链接: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 ;
}
#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 ;
}