题目分析:

策略是充分利用每一匹马的战斗力,若己方的最好马优于对方的最好马,则使己方的最好马战胜对方的最好马;若己方的最好马劣于对方的最好马,则必定要输一次,用己方最劣的一匹马消耗对方的最好马,从而使己方的最好马可以对战对方下一个等级的马,增大赢的概率。当双方的最好马实力相当时,为了尽可能多赢,检查双方最劣马的实力,若己方最劣马强于对方,则先用己方最劣马战胜对方最劣马,保证赢一局,若己方最劣马弱于对方,则该匹马注定要输,用其消耗对方最高战斗力。若双方最劣马实力相当,仍用己方最劣马消耗对方最好马,当只看最优和最劣两组数据时,这样最坏的结果是平局,然而可以增大中间数据赢的概率(因为己方的最优马得以对阵对方下一等级的马,且对方下一等级的马战斗力一定小于等于它)。

例题链接:http://www.acmicpc.sdnu.edu.cn/problem/show/1026

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main ()
{
    int n;
    int a[10005],b[10005];
    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+1+n);
    sort (b+1,b+1+n);

    int a1=1,a2=n;
    int b1=1,b2=n;

    int sum=0;
    int N=n;

    for(int i=1;i<=n;i++)
    {
        if(a[a1]<b[b1])
        {
            sum++;
            a1++;
            b1++;
        }
        else
        {
            if(a[a2]<b[b2])
            {
                sum++;
                a2--;
                b2--;
            }
            else
            {
                if(a[a2]>b[b1])
                {
                    a2--;
                    b1++;
                }
                else
                {
                    a2--;
                    b1++;
                    N--;
                }
            }
        }
    }
    if(N%2==0)
    {
        if(sum>N/2) cout << "WIN"  << endl;
        if(sum==N/2)cout << "DRAW" << endl;
        if(sum<N/2) cout << "LOSE" << endl;
    }
    if(N%2==1)
    {
        if(sum>=(N+1)/2)cout << "WIN" << endl;
        else cout << "LOSE" << endl;
    }
    return 0;
}