#include
#include
#include
#include
using namespace std;
typedef struct Student {
string id;
int de;
int cai;
int sum;
int rank;
} stu;
int compare(stu a, stu b) {
if(a.rank==b.rank) {
if(a.sum==b.sum) {
if(a.de==b.de) {
return a.idb.de;
}
} else {
return a.sum>b.sum;
}
} else {
return a.rank>num>>low>>high;
vector v;
for(int i=0; i>s.id>>s.de>>s.cai;
s.sum = s.de + s.cai;
if(s.de>=high && s.cai>=high) {
s.rank = 1;
} else if(s.de>=high && s.cai>=low) {
s.rank = 2;
} else if(s.de>=s.cai && s.cai>=low) {
s.rank = 3;
} else if(s.de>=low && s.cai>=low) {
s.rank = 4;
} else {
s.rank = 0;
}
if(s.rank>0) {
v.push_back(s);
}
}
sort(v.begin(), v.end(), compare);
cout<
(1)复杂结构体排序。要会写排序条件:升序用小于号,降序用大于号。(包括字符串也是,字符串不要用compare函数,否则会出现段错误!)
(2)分几类分别排序,这是数据结构里可增加一个rank字段,相当于先按rank排序,再按题目给定的条件排序。用一个vector记录并排序,不要把不同的类别用不同的vector分别排序,多次排序耗时高,会造成超时!
(3)结构体定义语法:
typedef struct Student {
string id;
int de;
int cai;
int sum;
int rank;
} stu;