20分#1和#10对了,求助
  • 板块P1650 田忌赛马
  • 楼主k333k
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/5/13 16:53
  • 上次更新2023/10/23 15:53:22
查看原帖
20分#1和#10对了,求助
762967
k333k楼主2023/5/13 16:53
#include<bits/stdc++.h>
using namespace std;
int n,a[2005],b[2005],ans=0;
bool b1[2005],a1[2005];
bool cmp(int x,int y)
{
    return x>y;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    sort(a+1,a+n+1,cmp);
    sort(b+1,b+n+1,cmp);
    /*
    for(int i=1;i<=n;i++) printf("%d ",a[i]);
    cout<<endl;
    for(int i=1;i<=n;i++) printf("%d ",b[i]);
    cout<<endl;
    */
    for(int i=1;i<=n;i++)
    {
        int num=0;
        int last=0,u=0;
        for(int j=1;j<=n;j++)
        {
            if(b1[j]) continue;
            //printf("%d %d\n",i,j);
            if(a[i]>b[j]&&b1[j]==false&&(num==0||num==-1))
            {
                num=200;
                b1[j]=true;
                b1[last]=false;
                last=j;
            }
            if(a[i]>b[j]&&b1[j]==false&&b[j]>b[last])
            {
                num=200;
                b1[j]=true;
                b1[last]=false;
                last=j;
            }
            if(a[i]==b[j]&&b1[j]==false&&num!=200&&b[j]>b[last])
            {
                num=-1;
                b1[j]=true;
                b1[last]=false;
                last=j;
            }
            u=j;
        }
        //if(num!=0) printf("%d %d %d\n",i,last,num);
        if(num==-1) continue;
        if(num==0) 
        {
            bool p=false;
            for(int j=1;j<=n;j++)
            {
                if(b1[j]==false)
                {
                    b1[j]=true;
                    //printf("%d %d\n",i,j);
                    p=true;
                    ans-=200;
                }
                if(p) break;
            }
        }
        else ans+=num;
    }
    cout<<ans;
	return 0;
}
2023/5/13 16:53
加载中...