电影票
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
小明经常去看电影,也收集了很多电影票,他发现电影票上的号码长度都是偶数的,并且都是由数字组成。
小明会把号码等分成前后两半,如果前半段中每个数字都严格大于或都严格小于后半段中的某个数字 (每个数字只比较一次),小明就会觉得这张票是幸运的。也就是存在一个一一对应关系使得前半段每个数字 严格大于或都严格小于后半段对应的数字。
比如2421是幸运的,因为2 > 1且4 > 2。而3754是不幸运的。
现在小明有很多电影票,希望你帮他判断一下它是不是幸运的。
小明会把号码等分成前后两半,如果前半段中每个数字都严格大于或都严格小于后半段中的某个数字 (每个数字只比较一次),小明就会觉得这张票是幸运的。也就是存在一个一一对应关系使得前半段每个数字 严格大于或都严格小于后半段对应的数字。
比如2421是幸运的,因为2 > 1且4 > 2。而3754是不幸运的。
现在小明有很多电影票,希望你帮他判断一下它是不是幸运的。
Input
输入包括多组数据。
对于每组数据,第一行一个n,表示电影票长度为2* n。
第二行一个长度为2* n的字符串,只由数字组成。
1 <= n <= 100
对于每组数据,第一行一个n,表示电影票长度为2* n。
第二行一个长度为2* n的字符串,只由数字组成。
1 <= n <= 100
Output
对于每张电影票,如果是幸运的就输出”YES”,否则输出”NO”。
Sample Input
2 2421 2 3754
Sample Output
YES NO
【分析】
左边一半严格大于右边一半或者严格小于右边一半..把字符串分开来分别sort一下然后一一比较就行了
【代码】
#include <stdio.h>
#include <algorithm>
using namespace std;
char s[2000];
int a[1000];
int b[1000];
int main()
{
int n,x,y,z;
while (~scanf("%d",&n))
{
scanf("%s",s);
for (int i=0;i<n;i++) a[i]=s[i]-48,b[i]=s[i+n]-48;
sort(a,a+n);sort(b,b+n);
for (int i=0;i<n;i++)
if (a[i]<=b[i])
goto out;
puts("YES");continue;
out:;
for (int i=0;i<n;i++)
if (a[i]>=b[i])
goto outt;
puts("YES");continue;
outt:;
puts("NO");
}
return 0;
}