# include <stdio.h>
# include <stdlib.h>

typedef struct Team *Group;
struct Team
{
    int L1,L2;  //每组中CPU的数量
    int A[100],B[100];  //每组中每个CPU算力大小
    int Asum,Bsum;  //每组中CPU总算力
};

int Asum_cmp_Bsum(Group group) //比较A,B的总算力
{
    int flag;
    if(group->Asum == group->Bsum)
        flag=1;
    else
        flag=0;
    return flag;
}

Group Input() //输入每组中CPU数量
{    
    int i;
    Group group;
    group = (Group)malloc(sizeof(Team));
    group->Asum = 0;
    group->Bsum = 0;

    //A,B两组CPU数量
    scanf("%d",&group->L1);
    scanf("%d",&group->L2);
    
    //A组每个CPU的算力、总算力
    for(i=0;i<group->L1;i++)
    {
        scanf("%d",&group->A[i]);
        group->Asum += group->A[i];
    }
    
    //B组每个CPU的算力、总算力
    for(i=0;i<group->L2;i++)
    {
        scanf("%d",&group->B[i]);
        group->Bsum += group->B[i];
    }
    return group;
}

int Amax(Group group) //找出A组中CPU的最大算力
{
    int i,max;
    max=-1;
    for(i=0;i<group->L1;i++)
    {
        if(max<=group->A[i])
            max=group->A[i];
    }
    return max;
}

int main()
{
    int i,j,temp,temp_A,temp_B,Sum_A,Sum_B,Amin,Bswap;
    /*
    temp:交换的中间容器,temp_A:存放A[i],temp_B:存放B[i];
    Sum_A:A当前总算力,Sum_B:B当前总算力;
    Amin:存放A组中CPU最小算力,Bswap:存放交换的B组CPU算力
    */
    
    //创建组
    Group group;
    group=Input(); //输入A,B两组相应数据
    Amin=Amax(group); //记录A组中最大算力
    Sum_A = group->Asum;
    Sum_B = group->Bsum;
    Bswap=0;temp=0,temp_A=0,temp_B=0;
    
    //判断A,B两组总算力
    if(Asum_cmp_Bsum(group))
        printf("A,B总算力相等");    
    else
    {
        for(i=0;i < group->L1;i++)
        {
            temp_A = group->A[i];
            
            for(j=0;j < group->L2;j++)
            {
                if(Sum_A != Sum_B)
                {
                    temp = temp_A;
                    temp_B = group->B[j];
                    Bswap = temp_B;
                    
                    //交换后计算A,B新的总算力
                    temp_A = temp_B;
                    temp_B = temp;
                    Sum_A = Sum_A - temp_B + temp_A;
                    Sum_B = Sum_B - temp_A + temp_B;        
                }//if
                
                if(Sum_A == Sum_B && Amin>group->A[i])
                    Amin=group->A[i];    
            }//j-for
        }//i-for
    }//else-if
    
    //打印A,B需交换的CPU算力
    printf("%d %d",Amin ,Bswap);
    return 0;
}

更多推荐