当时把样例L为60写死了,蛋疼!
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
#define MAX 100000+10
struct People
{
char id[10];
int talent;
int virtue;
int type;
} people[MAX], temp;
int cmp(const void *a, const void *b)
{
struct People* c = (People*)a;
struct People* d = (People*)b;
if ((*c).type != (*d).type)
return (*c).type - (*d).type;
else
{
int t1 = (*c).virtue+(*c).talent;
int t2 = (*d).virtue+(*d).talent;
if (t1 != t2)
return t2-t1;
else
{
if ((*c).virtue != (*d).virtue)
return (*d).virtue - (*c).virtue;
else
return strcmp((*c).id, (*d).id);
}
}
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int N = 0, L = 0, H = 0, cnt = 0;
scanf("%d%d%d", &N, &L, &H);
for (int i = 0; i < N; i++)
{
//cin >> temp.id >> temp.virtue >> temp.talent;
scanf("%s%d%d", temp.id, &temp.virtue, &temp.talent);
if (temp.virtue >= 60 && temp.talent >= 60)
{
if (temp.virtue >= H && temp.talent >= H)
temp.type = 1;
else if (temp.virtue >= H && temp.talent < H)
temp.type = 2;
else if (temp.virtue < H && temp.talent < H && temp.virtue >= temp.talent)
temp.type = 3;
else
temp.type = 4;
people[cnt++] = temp;
}
}
qsort(people, cnt, sizeof(people[0]), cmp);
//cout << cnt << endl;
printf("%d\n" ,cnt);
for (int i = 0; i < cnt; i++)
//cout << people[i].id << " " << people[i].virtue << " " << people[i].talent << endl;
printf("%s %d %d\n", people[i].id, people[i].virtue, people[i].talent);
return 0;
}