大家听说过“田七赛马”的故事吗?
那是在遥远的战国时期了,当时的齐国上流社会赛马成风,上至国君下至大臣,常常以重金赌赛马的输赢。而田七是一个没什么心眼却很爱面子的大臣,别人找他赛马他不好意思拒绝。但由于策略不当,屡赌屡输。
终于,在他将要把所有的俸禄都输光的时候,他找到从小长在大草原,对各种马的习性,能力都很熟悉的朋友手抓饼,请他帮自己赢得下一场比赛。
手抓饼暗中观察了对手的马,发现田七的马和他的相差不远,只要运用一点小手段,就很有可能战胜对手。
下场比赛的规则为:田七和对手分别使用N匹马来参赛,比赛过程中不允许出现平局, 最后谁赢的场数多于一半谁就是获胜(最终可能没有赢家)。假设每匹马都有恒定的速度,而手抓饼已经掌握了所有马的速度。
现在,请你来你来预测一下,手抓饼能否帮助田七赢得比赛。
输入
输入有多组测试数据。
每组测试数据包括3行:
第一行输入N(1≤N≤1000)。表示马的数量。
第二行有N个整型数字,即田七的N匹马的速度。
第三行有N个整型数字,即对手的N匹马的速度。
当N为0时结束。
输出
若通过手抓饼的安排,田七能赢得比赛,那么输出“YES”。
否则输出“NO”。
每个输出占一行。
样例输入 Copy
5 2 3 3 4 5 1 2 3 4 5 4 2 2 1 2 2 2 3 1 0
样例输出 Copy
YES NO
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n = 1, m = 0, i = 0, ying = 0, shu = 0, q1 = 0, p1 = 0, q2 = 0, p2 = 0;
vector<int> ysf;
vector<int> zxq;
while(true)
{
cin >> n;
if( n == 0 )
break;
for( i = 0; i < n; i++ )
{
cin >> m;
ysf.push_back(m);
}
for( i = 0; i < n; i++ )
{
cin >> m;
zxq.push_back(m);
}
sort( ysf.begin(),ysf.end() );
sort( zxq.begin(),zxq.end() );
q1 = 0, p1 = ysf.size() - 1;
q2 = 0, p2 = ysf.size() - 1;
for( i = 0; i < n; i++ )
{
if( ysf[p1] > zxq[p2] )
{
++ying;
--p1;
--p2;
}
else
{
if( ysf[q1] > zxq[q2] )
{
++ying;
++q1;
++q2;
}
else if( ysf[q1] < zxq[p2] )
{
++shu;
++q1;
--p2;
}
}
}
if( ying > shu )
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
vector<int>().swap(ysf);
vector<int>().swap(zxq);
ying = 0;
shu = 0;
}
return 0;
}