社区讨论
30分,求助
P1786帮贡排序参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lq8uzm0p
- 此快照首次捕获于
- 2023/12/17 10:19 2 年前
- 此快照最后确认于
- 2023/12/17 12:10 2 年前
CPP
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
map<string,int> mp;
struct p
{
string name,z; // z存储职位
int i,b,d; // i:编号 b:帮贡 d:等级
}
bz[114514];
int n;
bool cmp1(p a,p b)
{
if(a.b == b.b)
{
if(mp[a.z] == mp[b.z])
{
if(a.d == b.d)
{
return a.i < b.i;
}
return a.d > b.d;
}
return mp[a.z] < mp[b.z];
}
return a.b > b.b;
}
bool cmp2(p a,p b)
{
if(mp[a.z] == mp[b.z])
{
return a.d > b.d;
}
return mp[a.z] < mp[b.z];
}
void be() // init & input
{
mp["HuFa"] = 1;
mp["ZhangLao"] = 2;
mp["TangZhu"] = 3;
mp["JingYing"] = 4;
mp["BangZhong"] = 5;
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> bz[i].name >> bz[i].z >> bz[i].b >> bz[i].d;
bz[i].i = i;
}
return ;
}
void kin() // programming
{
sort(bz + 4,bz + n + 1,cmp1);
for(int i = 4;i <= n;i++)
{
if(i <= 5)
{
bz[i].z = "HuFa";
}
else if(i <= 9)
{
bz[i].z = "ZhangLao";
}
else if(i <= 16)
{
bz[i].z = "TangZhu";
}
else if(i <= 41)
{
bz[i].z = "JingYing";
}
else
{
bz[i].z = "BangZhong";
}
}
sort(bz + 4 + 1,bz + n + 1,cmp2);
return ;
}
void ei() // output
{
for(int i = 1;i <= n;i++)
{
cout << bz[i].name << ' ' << bz[i].z << ' ' << bz[i].d << endl;
}
return ;
}
int main()
{
be();
kin();
ei();
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...