1 条题解

  • 0
    @ 2023-6-11 12:18:00

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    //a数组代表小X,b数组代表电脑,f数组代表标记数组,如果该数被比较过就标记为1
    int n,a[10000],b[10000],f[10000],ans=0; 
    
    int main()
    {
        cin>>n;
        //读入小X的数据
        for (int i=1;i<=2*n;i++)
        {
            cin>>a[i];
        }
    
        //读入电脑的数据
        for (int i=1;i<=2*n;i++)
        {
            cin>>b[i]; 
        }
    
        //小X全部排序
        sort(a+1,a+2*n+1);
        //电脑前一半排序
        sort(b+1,b+n+1);
        //电脑后一半排序
        sort(b+n+1,b+2*n+1);
    
        //前一半,拿a数组的前一半数和b[i](前一半)比较,找到第一个比b[i]小的数,并标记该数比较过
        for (int i=1;i<=n;i++)
        {
            for (int j=1;j<=n;j++)
            {
    	//如果a[j]没被用过,且比b[i]小,赛马成功
                if ((f[j]==0)&&(a[j]<b[i]))
                {
    	//标记a[j]被用过了
                    f[j]=1;
                    ans+=1; 
                    break;
                }
            }
        }
    
        //后一半,用a数组的每个数和b[i]比较(b[i]是后一半),找到第一个比b[i]大的数
        for (int i=n+1;i<=2*n;i++)
        {
            for (int j=1;j<=n*2;j++)
            {
                if ((f[j]==0)&&(a[j]>b[i]))
                {
                    f[j]=1;
                    ans+=1; 
                    break;
                }
            }
        } 
     cout<<ans<<endl;
     return 0;
    }
    
    
    • 1

    信息

    ID
    2457
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者