题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2218
这里主要涉及到一个数据的读入问题,经分析每行第一次得到的输入要么是START要么是END要么是人名,所以通过选择分支处理比较合适。再有就是一个排序,直接sort即可。
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 10
struct Person
{
char name[21];
int weight;
};
bool less(Person p1,Person p2)
{
return p1.weight > p2.weight;
}
int main()
{
freopen("in.txt","r",stdin);
Person p[MAX];
char tag[MAX];
int i,j,days;
while(cin >> tag)
{
if(strcmp(tag,"START") == 0)
i = 0;
else if(strcmp(tag,"END") == 0)
{
sort(p,p+i,less);
for(j = 0;j < i;++j)
cout << p[j].name << endl;
cout << endl;
}
else
{
strcpy(p[i].name,tag);
cin >> days >> p[i].weight;
p[i].weight -= days;
++i;
}
}
return 0;
}