首页 > 代码库 > PAT 1062 Talent and Virtue
PAT 1062 Talent and Virtue
#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <algorithm>using namespace std;class Man {public: char id[10]; int talent; int virtue;};bool mycmp(const Man& a, const Man& b) { int ta = a.virtue + a.talent; int tb = b.virtue + b.talent; if (ta > tb) { return true; } else if (ta < tb) { return false; } // virtue + talent are equal, so compare virtue if (a.virtue > b.virtue) { return true; } else if (a.virtue < b.virtue) { return false; } // virtue is equal, so compare id return strcmp(a.id, b.id) < 0;}void sort_print(vector<Man> &v) { sort(v.begin(), v.end(), mycmp); int len = v.size(); for (int i=0; i<len; i++) { printf("%s %d %d\n", v[i].id, v[i].virtue, v[i].talent); }}int main() { int N, L, H; scanf("%d%d%d", &N, &L, &H); vector<Man> sage; vector<Man> noble; vector<Man> fool; vector<Man> small; Man tmp; int count = 0; for (int i=0; i<N; i++) { scanf("%s%d%d", tmp.id, &(tmp.virtue), &(tmp.talent)); if (tmp.virtue < L || tmp.talent < L) { // discard continue; } count++; if (tmp.virtue >= H && tmp.talent >= H) { sage.push_back(tmp); } else if (tmp.virtue >= H) { noble.push_back(tmp); } else if (tmp.virtue >= tmp.talent) { fool.push_back(tmp); } else { small.push_back(tmp); } } printf("%d\n", count); sort_print(sage); sort_print(noble); sort_print(fool); sort_print(small); return 0;}
有时排序,差个ranking
PAT 1062 Talent and Virtue
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。