AtCoder Beginner Contest 082 B - Two Anagrams
题目链接:https://abc082.contest.atcoder.jp/tasks/abc082_b
Time limit : 2sec / Memory limit : 256MB
Score : 200 points
Problem Statement
You are given strings s and t, consisting of lowercase English letters. You will create a string s' by freely rearranging the characters in s. You will also create a string t' by freely rearranging the characters in t. Determine whether it is possible to satisfy s'<t' for the lexicographic order.
Notes
For a string a=a1a2…aN of length N and a string b=b1b2…bM of length M, we say a<b for the lexicographic order if either one of the following two conditions holds true:
- N<M and a1=b1, a2=b2, ..., aN=bN.
- There exists i (1≤i≤N,M) such that a1=b1, a2=b2, ..., ai−1=bi−1 and ai<bi. Here, letters are compared using alphabetical order.
For example, xy
< xya
and atcoder
< atlas
.
Constraints
- The lengths of s and t are between 1 and 100 (inclusive).
- s and t consists of lowercase English letters.
Input
Input is given from Standard Input in the following format:
s t
Output
If it is possible to satisfy s'<t', print Yes
; if it is not, print No
.
Sample Input 1
yx axy
Sample Output 1
Yes
We can, for example, rearrange yx
into xy
and axy
into yxa
. Then, xy
< yxa
.
Sample Input 2
ratcode atlas
Sample Output 2
Yes
We can, for example, rearrange ratcode
into acdeort
and atlas
into tslaa
. Then, acdeort
< tslaa
.
Sample Input 3
cd abc
Sample Output 3
No
No matter how we rearrange cd
and abc
, we cannot achieve our objective.
Sample Input 4
w ww
Sample Output 4
Yes
Sample Input 5
zzz zzz
Sample Output 5
No
补漏洞
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <stack> 5 #include <string> 6 #include <cstring> 7 #include <cmath> 8 #include <cstdio> 9 using namespace std; 10 char a[101]; 11 char b[101]; 12 int main() 13 { 14 while(scanf("%s%s",&a,&b)!=EOF){ 15 int la=strlen(a); 16 int lb=strlen(b); 17 sort(a,a+la); 18 sort(b,b+lb); 19 if(a[0]<b[lb-1]) cout<<"Yes"<<endl; 20 else if(a[0]>b[lb-1]) cout<<"No"<<endl; 21 else{ 22 if(a[0]==a[la-1]&&b[0]==b[lb-1]&&a[0]==b[0]){ 23 if(lb>la) cout<<"Yes"<<endl; 24 else cout<<"No"<<endl; 25 continue; 26 } 27 int k=0; 28 for(int i=0;i<la;i++){ 29 for(int j=0;j<lb;j++){ 30 if(b[j]>a[i]){ 31 k++; 32 break; 33 } 34 } 35 } 36 if(k==la) cout<<"Yes"<<endl; 37 else cout<<"No"<<endl; 38 } 39 } 40 return 0; 41 }