洛谷 P1051 谁拿了最多奖学金
题目
详情见题目链接
题目链接P1051 谁拿了最多奖学金 - 洛谷
输入
见题目链接
输出
见题目链接
样例
见题目链接
题解
将输入的学生信息进行处理,转换成每个学生获得的奖学金的多少,同时统计所有学生获得的奖学金的总数。之后用冒泡排序对每个同学获得的奖学金金额从大到小排序即可(由于N<=100,所以用冒泡效率已足够)
代码
#include <iostream>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
using namespace std;
int main()
{
int n,i,j;
cin >> n;
string name[105];
int money[105];
long long sum;
sum = 0;
for (i=0;i<n;i++)
{
int temp1,temp2,temp5;
char temp3,temp4;
money[i] = 0;
cin >> name[i] >> temp1 >> temp2 >> temp3 >> temp4 >> temp5;
if ((temp1 > 80)&&(temp5 >= 1))
money[i] = money[i] + 8000;
if ((temp1 > 85)&&(temp2 > 80))
money[i] = money[i] + 4000;
if (temp1 > 90)
money[i] = money[i] + 2000;
if ((temp1 > 85)&&(temp4 == 'Y'))
money[i] = money[i] + 1000;
if ((temp2 > 80)&&(temp3 == 'Y'))
money[i] = money[i] + 850;
sum = sum + money[i];
}
for (i=0;i<n-1;i++)
for (j=0;j<n-1-i;j++)
if (money[j]<money[j+1])
{
int temp_money;
string temp_name;
temp_money = money[j];
money[j] = money[j+1];
money[j+1] = temp_money;
temp_name = name[j];
name[j] = name[j+1];
name[j+1] = temp_name;
}
cout << name[0] << endl;
cout << money[0] << endl;
cout << sum << endl;
return 0;
}
P.S. 请忽略那么多的include,仅仅是因为懒得选,所以无论做什么题目都是这一个模版直接全加上