FAQ ~
View code
1 # include <cstdio>
2 # include <cstring>
3
4 usingnamespace STD;
5
6. constint size = 100005;
7
8 char opp1 [size];
9 char opp2 [size];
10
11 int main ()
12 {
13 int IA;
14 int Ib;
15
16 while (scanf ("% S % s", opp1, opp2 )! = EOF)
17 {
18 int Lena = strlen (opp1 );
19 int lenb = strlen (opp2 );
20
21 bool found = false;
22
23 int Index = 0;
24
25 For (IA = 0, IB = 0; IA <Lena &&! Found; IA ++)
26 {
27 if (ib> = lenb) IB = 0;
28
29 If (opp1 [Ia] = opp2 [IB] & (IB = 0 | opp2 [IB] = opp2 [ib-1])
30 {
31 IB ++;
32}
33 elseif (opp1 [Ia] <= opp2 [IB] & (IB = 0 | opp1 [Ia] <= opp2 [ib-1])
34 {
35 IB = 0;
36 Index = Ia + 1;
37 If (IA = Lena-1)
38 {
39 found = true;
40}
41}
42 elseif (ib! = 0 & opp2 [ib-1] <opp1 [Ia] & opp2 [ib-1] <= opp2 [IB])
43 {
44 found = true;
45 Index = IA;
46}
47 elseif (opp2 [IB] <opp1 [Ia] & (IB = 0 | opp2 [IB] <= opp2 [ib-1])
48 {
49 found = true;
50}
51}
52 // printf ("% d \ n", found, index );
53
54 if (! Found)
55 {
56 int I;
57 for (I = 0; I <lenb; I ++)
58 If (opp2 [I]! = Opp1 [0])
59 break;
60 if (I = lenb) Index = 0;
61 else
62 if (opp2 [I] <opp1 [0]) Index = 0;
63 else Index = Lena;
64}
65
66 for (INT I = 0; I <index; I ++)
67 printf ("% C", opp1 [I]);
68 for (INT I = 0; I <lenb; I ++)
69 printf ("% C", opp2 [I]);
70 for (INT I = index; I <Lena; I ++)
71 printf ("% C", opp1 [I]);
72 printf ("\ n ");
73
74}
75 return0;
76}