3805 谁拿了最多的奖学金 好多好多的条件
喜欢这么多条件判断的程序嘛?^^
#include<bits/stdc++.h> #define f(i,s,e) for(int i = s; i <= e; i++) #define ll long long using namespace std; const int N = 1e3+10,inf = 0x3f3f3f3f; struct node{ string name,gb,xb; //名字、干部、西部学生 int qm,py,lw; //期末、评议、论文 int money; //总奖学金 int id; }; node a[N]; int n; bool cmp(node a,node b) { if(a.money == b.money) return a.id < b.id;//********** else return a.money > b.money; } int main() { cin >> n; int ans = 0; for(int i = 1; i <= n; i++) { cin >> a[i].name >> a[i].qm >> a[i].py >> a[i].gb >> a[i].xb >> a[i].lw; int sum = 0; //用来算得了多少钱 if(a[i].qm > 80 && a[i].lw >= 1) sum += 8000; //院士奖学金 if(a[i].qm > 85 && a[i].py > 80) sum += 4000; //五四奖学金 if(a[i].qm > 90) sum += 2000; //成绩优秀奖 if(a[i].qm > 85 && a[i].xb == "Y") sum += 1000; //西部奖学金 if(a[i].py > 80 && a[i].gb == "Y") sum += 850; //班级贡献奖 ans += sum; //记录累加的总钱数 a[i].money = sum; //记录每名学生的钱 a[i].id = i; //记录这是第i位学生 ****** } sort(a + 1, a + 1 + n, cmp); cout << a[1].name << endl; cout << a[1].money << endl; cout << ans << endl; return 0; }