H 象棋对局胜负-2019浙江理工大学新生赛

问题 H: 象棋对局胜负

时间限制: 1 Sec  内存限制: 128 MB

题目描述

快码佳编四兄弟姐妹在丁总那已经呆了近一个月了。 
最近丁总给四兄弟姐妹出了个难题,希望他们帮助丁总的公司选拔出一批优秀的人才担任重要的职位。当然这些职位对智商的要求各自不同。为了让更多高智商的到合适的位置,他们需要按智商高低排个序。但智商不好测,最终大家一致决定通过象棋比赛来分辨。 
象棋比赛计分规则如下: 
(1)每局对弈双方,胜者得3分,负者得0分,如果平局各得1分。 
(2)每个棋手最终得分为每局得分和。 
(3)每个棋手对弈过的所有对手最终得分的和为该棋手的对手分。比如A只跟B和C下过,最好得分为A:0分,B:5分,c:5分,那么A的对手分为10分 
排名规则如下: 
(1)按照每个棋手最终得分,得分高的排在前 
(2)如果有棋手得分相同,那么比较对手分,对手分高的排名靠前 
(3)如果得分与对手分都相同,那么序号小的排名靠前 
这样保证每个棋手排名不会相同。 

 

输入

第一行输入1个整数m,总共有m人参加(10 <= m <= 100) 
然后是m行,分别为第1到m号棋手的总分,对手分
然后是一个整数k,表示需要挑选出前K个排名靠前的人 

 

输出

按照排名从高到低输出K行,每行为编号,得分,对手分,排名,中间用一个空格隔开

样例输入

4
3 5
1 7
1 1
5 7
2

样例输出

4 5 7 1
1 3 5 2

题解:一道简单的多特征值排序,用sort或冒泡都能AC。

源代码:

#include<bits/stdc++.h>
using namespace std;
struct stu{
    int mark1;
    int mark2;
    int num;
    int pm;
}s[105];
int main(){
    int m,k,sum=0;
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>s[i].mark1>>s[i].mark2;
        s[i].num+=i;
    }
    cin>>k;
    for(int i=1;i<=m;i++)
        for(int j=i+1;j<=m;j++){
            if(s[i].mark1<s[j].mark1)swap(s[i],s[j]);
            else if(s[i].mark1==s[j].mark1&&s[i].mark2<s[j].mark2)swap(s[i],s[j]);
            else if(s[i].mark1==s[j].mark1&&s[i].mark2==s[j].mark2&&s[i].num>s[j].num)swap(s[i],s[j]);
        }
    for(int i=1;i<=k;i++)
        for(int j=i+1;j<=k;j++){
            if(s[i].mark1<s[j].mark1)swap(s[i],s[j]);
            else if(s[i].mark1==s[j].mark1&&s[i].mark2<s[j].mark2)swap(s[i],s[j]);
            else if(s[i].mark1==s[j].mark1&&s[i].mark2==s[j].mark2&&s[i].num>s[j].num)swap(s[i],s[j]);
        }
    for(int i=1;i<=k;i++)s[i].pm+=i;
    for(int i=1;i<=k;i++)cout<<s[i].num<<" "<<s[i].mark1<<" "<<s[i].mark2<<" "<<s[i].pm<<endl;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值