题目链接: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;
}
复制代码
本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2009/09/14/1566569.html,如需转载请自行联系原作者