题解 P1650 【赛马】

shadowice1984

2017-09-19 13:50:28

题解

按楼下大佬们讲的贪心

如果头尾可以赢就直接赢钱;

然后不行的花就用最坏的马浪费掉齐王的好马。

然后你就得了10分;

因为没!有!特!判!

如果在怼的时候平局了,是不扣钱的!!!

#include<stdio.h>
#include<algorithm>
using namespace std;
int n;int qw[2000];int tj[2000];
int* headqw;int* tailqw;int* headtj;int* tailtj;
int res;
int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&tj[i]);
    }
    for(int i=0;i<n;i++)
    {
        scanf("%d",&qw[i]);
    }
    sort(tj,tj+n);sort(qw,qw+n);//排序
    tailqw=qw;tailtj=tj;headqw=qw+n-1;headtj=tj+n-1;//头尾指针,方便代码
    for(int i=0;i<n;i++)
    {
        if(*headtj>*headqw)//头是否能赢
        {
            res+=200;headtj--;headqw--;
            continue;
        }
        if(*tailtj>*tailqw)//尾是否能赢
        {
            res+=200;tailtj++;tailqw++;
            continue;
        }
        if(*tailtj<*headqw)//硬怼
        {
            res-=200;
            tailtj++;headqw--;
        }
        else if(*tailtj==*headqw)//特判!!!(敲黑板)不加就是10分!
        {
            tailtj++;headqw--;
        }
    }
    printf("%d",res);
    return 0;//拜拜程序~
}