This is an extension of ccc20j4. In this version, the constraints are higher.
Thuc likes finding cyclic shifts of strings. A cyclic shift of a string is obtained by moving characters from the beginning of the string to the end of the string. We also consider a string to be a cyclic shift of itself. For example, the cyclic shifts of ABCDE
are:
ABCDE
, BCDEA
, CDEAB
, DEABC
, and EABCD
.
Given some text, , and a string, , determine if contains a cyclic shift of .
Input Specification
The input will consist of exactly two lines containing only uppercase letters. The first line will be the text , and the second line will be the string .
Subtask 1 [90%]
Each line will contain at most characters.
Subtask 2 [10%]
Each line will contain at most characters.
Tip: the intended solution runs well within the time limit without constant optimization.
Output Specification
Output yes
if the text, , contains a cyclic shift of the string, . Otherwise, output no
.
Sample Input 1
ABCCDEABAA
ABCDE
Output for Sample Input 1
yes
Explanation of Output for Sample Input 1
CDEAB
is a cyclic shift of ABCDE
and is contained in the text ABC
CDEAB
AA
.
Sample Input 2
ABCDDEBCAB
ABA
Output for Sample Input 2
no
Explanation of Output for Sample Input 2
The cyclic shifts of ABA
are ABA
, BAA
, and AAB
. None of these shifts are contained in the text ABCDDEBCAB
.
Comments
Can this be solved using Python within the time limits? No accepted solutions for python or pypy exist.
[Edit] I see that there is an explicit time limit for python which suggests it ought to be solvable.
I'm stuck on 90%. Getting TLE on 2nd problem in part 3.
A mystery to solve: why can't I
exit()
in python? I getNameError
if Iexit()
rather than use logic to control program flow.Read https://dmoj.ca/tips/#python-site
That would explain it :)
you can still use
sys.exit(0)
however