debug 到怀疑人生…
坑点:给的是时间, 用时越长 马越弱
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
int a[100006], b[100006];
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int n, i, al, ar, bl, br, win, lose;
while(~scanf("%d", &n)){
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
for(i = 0; i < n; i++)
scanf("%d", &a[i]); //田忌
for(i = 0; i < n; i++)
scanf("%d", &b[i]); //齐王
sort(a, a+n, cmp); //时间长的排前面, 从弱马开始比较
sort(b, b+n, cmp);
win = 0;
al = bl = 0; //左端点(bl hhh)
ar = br = n-1; //右端点
for(i = 1; i <= n; ++i){
if(a[al] < b[bl]){ //最弱的马 田忌 > 齐王,干脆利落赢一局
++win;
++al;
++bl;
}
else if(a[ar] < b[br]){ // 最强的马 田忌 > 齐王,干脆利落又一局
++win;
--ar;
--br;
}
else if(a[ar] > b[br]){ //最强的马 田忌 < 齐王,用田忌弱马输给齐王强马
--win;
++al;
--br;
}
else{ //强马 田忌 == 齐王 && 弱马 田忌 <= 齐王, 田忌公举用弱马耗掉强马
if(a[al] > b[br]) //如果弱马 田忌 < 齐王, 耗掉强马, 输一局, 如果实力相当,平局
--win;
++al;
--br;
}
}
if(!win)
printf("DRAW\n");
else if(win > 0)
printf("WIN\n");
else
printf("LOSE\n");
}
return 0;
}