您的位置:首页 > 其它

1055. The World's Richest (25)解题报告

2016-10-30 10:17 387 查看
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define N 100000
using namespace std;

struct people {
char name[15];
int age, net;
};

bool comp(people p1, people p2);
void print(people arr[], int n, int amin, int amax, int m);

int main(void) {
int n, k, i, j;
setvbuf(stdin, new char[1 << 20], _IOFBF, 1 << 20);
setvbuf(stdout, new char[1 << 20], _IOFBF, 1 << 20);

people *arr = new people
;
people  *arr2 = new people
;
scanf("%d %d", &n, &k);
for (i = 0; i < n; i++) {
scanf("%s %d %d", arr[i].name, &arr[i].age, &arr[i].net);
}
sort(arr, arr + n, comp);
int cnt = 0, age[300] = { 0 };
for (i = 0, j = 0; i < n; i++) {
if (++age[arr[i].age] < 100) {
arr2[j].age = arr[i].age;
arr2[j].net = arr[i].net;
strcpy(arr2[j].name, arr[i].name);
j++;
}
}
int amin, amax, m;
for (i = 1; i < k + 1; i++) {
scanf("%d %d %d", &m, &amin, &amax);
printf("Case #%d:\n", i);
print(arr2, j, amin, amax, m);
}
delete[] arr;
delete[] arr2;
return 0;
}

bool comp(people p1, people p2) {
if (p1.net > p2.net) {
return true;
}
else if (p1.net < p2.net) {
return false;
}
else {
if (p1.age > p2.age) {
return false;
}
else if (p1.age < p2.age) {
return true;
}
else {
int result;
result = strcmp(p1.name, p2.name);
if (result > 0) {
return false;
}
else if (result < 0) {
return true;
}
else {
return true;
}
}
}
}

void print(people arr[], int n, int amin, int amax, int m) {
int i, j;
for (i = 0, j = 0; i < n && j < m; i++) {
if (arr[i].age >= amin && arr[i].age <= amax) {
printf("%s %d %d\n", arr[i].name, arr[i].age, arr[i].net);
j++;
}

}
if (!j) {
puts("None");
}
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: