1062. Talent and Virtue (25)
2016-02-26 16:47
429 查看
考虑自定义比较
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct man{
int id, talent, virtue;
man(int i, int t, int v) : id(i), talent(t), virtue(v){}
};
int n, l, h;
int level(man m){
if(m.talent >= h && m.virtue >= h) return 4;
else if(m.talent < h && m.virtue >= h) return 3;
else if(m.talent < h && m.virtue < h && m.virtue >= m.talent) return 2;
else return 1;
}
bool cmp(const man& m1, const man& m2){
int l1 = level(m1), l2 = level(m2);
int sum1 = m1.talent + m1.virtue, sum2 = m2.talent + m2.virtue;
return l1 > l2 || (l1 == l2 && sum1 > sum2)
|| (l1 == l2 && sum1 == sum2 && m1.virtue > m2.virtue)
|| (l1 == l2 && sum1 == sum2 && m1.virtue == m2.virtue && m1.id < m2.id);
}
int main(){
scanf("%d%d%d", &n, &l, &h);
vector<man> men;
for(int i = 0; i < n; ++i){
int id, talent, virtue;
scanf("%d%d%d", &id, &virtue, &talent);
if(talent >= l && virtue >= l){
men.emplace_back(id, talent, virtue);
}
}
sort(begin(men), end(men), cmp);
printf("%d\n", (int)men.size());
for(auto& m : men){
printf("%08d %d %d\n", m.id, m.virtue, m.talent);
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct man{
int id, talent, virtue;
man(int i, int t, int v) : id(i), talent(t), virtue(v){}
};
int n, l, h;
int level(man m){
if(m.talent >= h && m.virtue >= h) return 4;
else if(m.talent < h && m.virtue >= h) return 3;
else if(m.talent < h && m.virtue < h && m.virtue >= m.talent) return 2;
else return 1;
}
bool cmp(const man& m1, const man& m2){
int l1 = level(m1), l2 = level(m2);
int sum1 = m1.talent + m1.virtue, sum2 = m2.talent + m2.virtue;
return l1 > l2 || (l1 == l2 && sum1 > sum2)
|| (l1 == l2 && sum1 == sum2 && m1.virtue > m2.virtue)
|| (l1 == l2 && sum1 == sum2 && m1.virtue == m2.virtue && m1.id < m2.id);
}
int main(){
scanf("%d%d%d", &n, &l, &h);
vector<man> men;
for(int i = 0; i < n; ++i){
int id, talent, virtue;
scanf("%d%d%d", &id, &virtue, &talent);
if(talent >= l && virtue >= l){
men.emplace_back(id, talent, virtue);
}
}
sort(begin(men), end(men), cmp);
printf("%d\n", (int)men.size());
for(auto& m : men){
printf("%08d %d %d\n", m.id, m.virtue, m.talent);
}
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性