问题标题: 酷町堂:2731 国王游戏 给点思路或者代码吧

0
0
已解决
李牧晓
李牧晓
中级天翼
中级天翼

题目描述 Description

正逢某国的国庆,该国国王邀请若干位大臣来一起聚会,他们做了一个小游戏,大厅中间放了两个大的纸盒子,纸盒子中分别放了很多的数字,数字可能有重复的,现在包括国王在内的所有人都分别来两个纸盒子中抽取数字,从a盒子中抽取到的数字放在左手中,从b盒子中抽取到的数字放在右手中,现在每个人都将自己左手上的数字除以右手上的数字得到那个人本轮游戏的游戏值,游戏值为小数,国王想给每位大臣奖励金币,规则如下:获得的游戏值比国王大的大臣获得的金币为该大臣的游戏值和国王的游戏值的差值的两倍,获得的游戏值比国王小的大臣获得的金币为该大臣的游戏值和国王的游戏值的差值的一半,,获得的游戏值和国王相等的大臣获得的金币为0,请你按照获得金币从大到小的顺序输出大臣的金币的数量、游戏值的大小和当时左右手分别抽到的数字的大小,如果金币值相等则按照左手抽到的数字从大到小排序。

输入描述 Input Description

第一行:正整数n(n<100),表示大臣的数量
第二行:两个整数,分别表示国王的左手和右手的数字
接下来n行:两个整数,分别表示每位大臣的左手和右手的数字

输出描述 Output Description

输出n行,每行四个数字,用一个空格间隔,按照获得金币从大到小的顺序输出大臣的金币的数量、游戏值的大小和当时左右手分别抽到的数字的大小

样例输入 Sample Input

2 12 3 12 5 10 8

样例输出 Sample Output

1.375 1.25 10 8 0.8 2.4 12 5


0
已采纳
王文博
王文博
缔造者之神
缔造者之神

还是把结构体给你吧:

struct gwyx
{
    double l,r,g;
    double gameN()
    {
        return l/r;
    }
}gw,a[105];
bool cmp(gwyx x,gwyx y)
{
    if(x.g!=y.g) return x.g>y.g;
    return x.l>y.l;
}

望采纳!

(主函数还有一大堆堆堆堆东西)

不会的话……洛谷见!

0
0
0
0
张恩泽
张恩泽
高级天翼
高级天翼

就是结构体排序,先按金币排序,再按左手的东西排序

0
0
汪天琦
汪天琦
初级光能
初级光能

double gw=(double)x/y; for(int i=1;i<=n;i++){ cin>>s[i].a>>s[i].b; if(s[i].game()>gw){ s[i].gold=2*(s[i].game()-gw); }else if(s[i].game()<gw){ s[i].gold=0.5*(gw-s[i].game()); }else{ s[i].gold=0; } } sort(s+1,s+n+1,cmp);

核心

望采纳

我要回答