if (p1.banggong != p2.banggong) return p1.banggong>p2.banggong;
else return p1.num<p2.num;
}
复制代码
最终代码
[code]#include#includeusing namespace std;struct people { string name, zhiwei, xzw; long long banggong; long long dengji; int num;}a[125];int n;bool compare(people p1, people p2){ if (p1.banggong == p2.banggong) return p1.num < p2.num; else return p1.banggong > p2.banggong;}//将职位转化为数字,方便根据职位来分别顺序,职位越大,数字越大int change(string s){ if (s == "BangZhu") return 6; else if (s == "FuBangZhu") return 5; else if (s == "HuFa") return 4; else if (s == "ZhangLao") return 3; else if (s == "TangZhu") return 2; else if (s == "JingYing") return 1; else return 0;}bool compare2(people p1, people p2){ if (change(p1.xzw) != change(p2.xzw)) return change(p1.xzw) > change(p2.xzw); else { if (p1.dengji != p2.dengji) return p1.dengji > p2.dengji; else { return p1.num < p2.num; } }}int main(){ cin >> n; for (int i = 1; i > a.name >> a.zhiwei >> a.banggong >> a.dengji; a.num = i; } //排序,排护法及厥后面的全部人 sort(a + 4, a + 1 + n, compare); for (int i = 1; i = 2 && i = 4 && i = 6 && i = 10 && i = 17 && i