社区讨论

求调一份非常容易调的代码

P1786帮贡排序参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo29jn7b
此快照首次捕获于
2023/10/23 10:13
2 年前
此快照最后确认于
2023/11/03 10:25
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
    register int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        x=(x<<3)+(x<<1)+(c^48); 
        c=getchar();
    }
    return x*f;
}
struct node
{
	int id,banggong,lv;
	string name,zhiwei;
}a[115]; 
int n;
bool cmp(node x,node y)
{
	if(x.banggong==y.banggong) return x.id<y.id;
	else return x.banggong>y.banggong;
}
int level(string x)
{
	if(x=="Hufa") return 0;
	if(x=="Zhanglao") return 1;
	if(x=="Tangzhu") return 2;
	if(x=="Jingying") return 3;
	return 4;
}
void bian()
{
	for(int i=4;i<=n;i++)
	{
		if(i==4 || i==5) a[i].zhiwei="Hufa";
		if(i>=6 && i<=9) a[i].zhiwei="Zhanglao";
		if(i>=10 && i<=16) a[i].zhiwei="Tangzhu";
		if(i>=17 && i<=41) a[i].zhiwei="Jingying";
		if(i>=41) a[i].zhiwei="Bangzhong"; 
	}
}
bool cmp2(node x,node y)
{
	if(level(x.zhiwei)==level(y.zhiwei))
		if(x.lv==y.lv) return x.id<y.id;
		else return x.lv>y.lv;
	else return level(x.zhiwei)<level(y.zhiwei);
}
signed main()
{
	cout<<a[0].name<<a[0].zhiwei;
	n=read();
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].name>>a[i].zhiwei;
		a[i].banggong=read(),a[i].lv=read();
		a[i].id=i;
		if(i<=3) cout<<a[i].name<<' '<<a[i].zhiwei<<' '<<a[i].lv<<endl;
	}
	sort(a+4,a+n+1,cmp);
	bian();
    /*for(int i=4;i<=n;i++)
		cout<<a[i].name<<' '<<a[i].zhiwei<<' '<<a[i].lv<<endl;*/
	sort(a+4,a+n+1,cmp2);
	for(int i=4;i<=n;i++)
		cout<<a[i].name<<' '<<a[i].zhiwei<<' '<<a[i].lv<<endl;
	return 0;
}

经过实验,按帮贡排序,没有问题 所以有没有好心人谤满看一下后面的这一段 样例过的 自己的样例也过了

回复

6 条回复,欢迎继续交流。

正在加载回复...