#include<iostream>
#include<string>
using namespace std;
int n;
string a[7] = { "BangZhu","FuBangZhu","HuFa","ZhangLao","TangZhu","JingYing","BangZhong" };
struct Member
{
string name;
string postition;
long long int contribution;
int level;
int queue;
};
Member m[111], temp;
void start(void)
{
cin >> n;
for (int i = 0; i < n; i++)
{
(m[i]).queue = i;
cin >> (m[i]).name >> (m[i]).postition >> (m[i]).contribution >> (m[i]).level;
}
}
void sort1()
{
for (int i = 4; i < n; i++)
{
Member key = m[i];
int j = i - 1;
while ((j >= 3) && (key.contribution > (m[j]).contribution))
{
m[j + 1] = m[j];
j--;
}
m[j + 1] = key;
}
}
void promote()
{
for (int i = 3; i < n; i++)
if (3 <= i && i < 5)
(m[i]).postition=a[2];
else if (5 <= i && i < 9)
(m[i]).postition=a[3];
else if (9 <= i && i < 16)
(m[i]).postition=a[4];
else if (16 <= i && i < 41)
(m[i]).postition=a[5];
else
(m[i]).postition=a[6];
}
void sort2()
{
for (int i = 4; i < n; i++)
{
Member key = m[i];
int j = i - 1;
while ((j >= 3) &&( key.postition == (m[j]).postition &&key.level>(m[j]).level)|| (key.postition == (m[j]).postition && key.level == (m[j]).level&& key.queue < (m[j]).queue))
{
m[j + 1] = m[j];
j--;
}
m[j + 1] = key;
}
}
void show(void)
{
for(int i=0;i<n;i++)
cout << (m[i]).name <<' '<< (m[i]).postition <<' '<< (m[i]).level << endl;
}
int main()
{
start();
sort1();
promote();
sort2();
show();
return 0;
}
洛谷P1786 帮贡排序进阶解法
最新推荐文章于 2023-12-13 20:26:13 发布