求求大佬帮看一下为啥50pts
查看原帖
求求大佬帮看一下为啥50pts
733005
Johanan楼主2023/1/11 15:44
#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
struct info
{
	string name, pos;
	long long attr;
	int level, code;
} gang[115];
map <string, int> mappos = { {"HuFa", 4}, {"ZhangLao", 3}, {"TangZhu", 2}, {"JingYing", 1} };
bool cmp1(info i1, info i2)
{
	if (i1.attr == i2.attr)
		return i1.code < i2.code;
	return i1.attr > i2.attr;
}
bool cmp2(info i1, info i2)
{
	if (mappos[i1.pos] == mappos[i2.pos])
	{
		if (i1.level == i2.level)
			return i1.code < i2.code;
		return i1.level > i2.level;
	}
	return mappos[i1.pos] > mappos[i2.pos];
}
string str[38] = { "HuFa", "HuFa", 
				"ZhangLao", "ZhangLao", "ZhangLao", "ZhangLao", 
				"TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu", "TangZhu", 
				"JingYing","JingYing", "JingYing", "JingYing", "JingYing", 
				"JingYing", "JingYing", "JingYing", "JingYing", "JingYing", 
				"JingYing", "JingYing", "JingYing", "JingYing", "JingYing", 
				"JingYing", "JingYing", "JingYing", "JingYing", "JingYing", 
				"JingYing", "JingYing", "JingYing", "JingYing", "JingYing" };
int main()
{
	int n, p = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> gang[i].name >> gang[i].pos >> gang[i].attr >> gang[i].level;
		gang[i].code = i;
	}
	stable_sort(gang + 4, gang + n + 1, cmp1);
	for (int i = 4; i <= n && p <= 37; i++, p++)
			gang[i].pos = str[p];
	stable_sort(gang + 4, gang + n + 1, cmp2);
	for (int i = 1; i <= n; i++)
		cout << gang[i].name << " " << gang[i].pos << " " << gang[i].level << endl;
}
2023/1/11 15:44
加载中...