问题标题: 酷町堂:2703

0
0
已解决
周明轩
周明轩
资深光能
资深光能

题目描述 Description

学习举行国际象棋比赛,经过积分赛后,N个选手都有自己的积分,现选排名靠前的N(偶数)个人,捉对再战。为了增加比赛的对抗性,要求对弈的选手势均力敌(量化描述:各组分值之和最小)。请你编程安排对弈分组。

输入描述 Input Description

第一行  一个偶数N(N﹤=1000),表示N个选手参加比赛;
第二行  N个正整数,第i个数表示,表示编号为i的选手的积分。

输出描述 Output Description

二分之N行,表示对弈分组的情况。每行两个整数,为某一对弈分组中两个选手的编号。我们做这样的约定:两位对弈选手积分总和大的组排在前面;每一组中,分值高的排在前面,若分值相同,编号小的,排前面。

样例输入 Sample Input

6 60 80 85 60 70 90

样例输出 Sample Output

6 3 2 5 1 4

求思路


0
已采纳
胡钰妍
胡钰妍
资深光能
资深光能
for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=d;
        d++;
    }
    for(int i=1;i<=n-1;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(a[i]<a[j])
            {
                swap(a[i],a[j]);
                swap(b[i],b[j]);
            }
            if(a[i]==a[j]&&b[i]>b[j])
            {
                swap(b[i],b[j]);
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        cout<<b[i]<<" "<<b[i+1]<<endl;
        i++;

 

核心,供参考,望采纳

0
0
0
我要回答