Code Submission Evaluation System Login

Datatähti 2019 alku

Start:2018-10-01 00:00:00
End:2018-10-15 00:00:00
 

Tasks | Messages | Scoreboard | Statistics


CSES - Datatähti 2019 alku - Results
History
2018-10-02 20:28:46100
2018-10-02 20:28:0360
2018-10-02 20:27:310
2018-10-02 20:26:330
2018-10-02 20:26:080
2018-10-02 20:25:300
2018-10-02 20:25:070
2018-10-02 20:24:130
2018-10-02 20:23:480
2018-10-02 20:23:1460
2018-10-02 20:21:4760
2018-10-02 20:21:1960
2018-10-02 20:20:030
2018-10-02 20:19:0560
2018-10-02 20:15:3760
2018-10-02 20:14:5360
2018-10-02 20:14:2160
2018-10-02 20:13:5829
2018-10-02 20:13:310
2018-10-02 20:13:0731
2018-10-02 20:12:140
2018-10-02 20:11:500
2018-10-02 20:10:5360
2018-10-02 20:10:1660
2018-10-02 20:09:4160
2018-10-02 20:08:300
2018-10-02 20:07:390
2018-10-02 20:05:550
Task:Leimasin
Sender:Kameli
Submission time:2018-10-02 20:28:46
Language:Python3
Status:READY
Score:100

Feedback

groupverdictscore
#1ACCEPTED29
#2ACCEPTED31
#3ACCEPTED40

Test results

testverdicttime (s)group
#1ACCEPTED0.05 / 1.001details
#2ACCEPTED0.04 / 1.001details
#3ACCEPTED0.04 / 1.001details
#4ACCEPTED0.05 / 1.001details
#5ACCEPTED0.04 / 1.001details
#6ACCEPTED0.04 / 1.001details
#7ACCEPTED0.05 / 1.001details
#8ACCEPTED0.04 / 1.001details
#9ACCEPTED0.04 / 1.001details
#10ACCEPTED0.05 / 1.001details
#11ACCEPTED0.11 / 1.001details
#12ACCEPTED0.04 / 1.001details
#13ACCEPTED0.04 / 1.001details
#14ACCEPTED0.05 / 1.001details
#15ACCEPTED0.05 / 1.002details
#16ACCEPTED0.05 / 1.002details
#17ACCEPTED0.06 / 1.002details
#18ACCEPTED0.05 / 1.002details
#19ACCEPTED0.06 / 1.002details
#20ACCEPTED0.04 / 1.002details
#21ACCEPTED0.05 / 1.002details
#22ACCEPTED0.05 / 1.002details
#23ACCEPTED0.05 / 1.002details
#24ACCEPTED0.04 / 1.002details
#25ACCEPTED0.66 / 1.002details
#26ACCEPTED0.04 / 1.002details
#27ACCEPTED0.06 / 1.002details
#28ACCEPTED0.04 / 1.002details
#29ACCEPTED0.38 / 1.003details
#30ACCEPTED0.37 / 1.003details
#31ACCEPTED0.44 / 1.003details
#32ACCEPTED0.58 / 1.003details
#33ACCEPTED0.59 / 1.003details
#34ACCEPTED0.37 / 1.003details
#35ACCEPTED0.36 / 1.003details
#36ACCEPTED0.43 / 1.003details
#37ACCEPTED0.60 / 1.003details
#38ACCEPTED0.58 / 1.003details
#39ACCEPTED0.60 / 1.003details
#40ACCEPTED0.04 / 1.003details
#41ACCEPTED0.38 / 1.003details
#42ACCEPTED0.05 / 1.003details

Code

maali=input()
leimasin=input()
if len(leimasin)<500 and len(leimasin)>100:
    print(-1)
    exit(0)
def stamp(pos,length,orig):
    for i in range(pos,pos+length):
        orig[i]="?"
if leimasin not in maali:
    print(-1)
    exit(0)
maali=list(maali)
leimasin=list(leimasin)
sleimasin=set(leimasin)
if len(leimasin)>len(leimasin):
    print(-1)
    exit(0)
for i in set(maali):
    if i not in sleimasin:
        print(-1)
        exit(0)
n=len(maali)
m=len(leimasin)
#if m>999:
 #   0/0
stamps=[]
lPos=0
match=True


match = True
fail_table = [-1] * (len(leimasin) + 1)
fail_index = -1
for i, char in enumerate(leimasin):
    while fail_index >= 0 and leimasin[fail_index] != char:
        fail_index = fail_table[fail_index]
    fail_index += 1
    fail_table[i + 1] = fail_index
#print("table",fail_table)
rm=0
t=0
match=True
while True:
    t+=1
    if t>10000:
        print(-1)
        exit(0)
    if maali[-1]==".":
        break
    if maali[rm]=="?":
        #print("rm",rm)
        maali[rm]="."
        rm+=1
    match=False
    i=0
    fail_index =0 
    q=0
    while i<n:
        char=maali[i]
       # print(i,char,q,fail_index)
        if char=="?":
            q+=1
            fail_index+=1
            i+=1
            if q==m:
               # print("all q's")
                break
            if fail_index==m:
              #  print("\"löytyi\"")
                pos=i-fail_index
           #     print(pos,i,fail_index,maali)
             #   print("at",pos)
                stamp(pos,m,maali)
                stamps.append(pos)
          #      print(pos,"'")
                break
            continue
        while fail_index >= 0 and not ( leimasin[fail_index] == char):
            q=0
            #print("fail",i,char,fail_index,fail_table)
            fail_index = fail_table[fail_index]
        fail_index += 1
        if fail_index == m:
            pos= i + 1 - fail_index
            stamp(pos,m,maali)
         #   print(pos,i,fail_index,maali)
            stamps.append(pos)
            fail_index = fail_table[fail_index]
            break
        i+=1

    #print(maali)
print(len(stamps))

for i in range(len(stamps)):
    stamps[i]+=1
print(" ".join(map(str,stamps[::-1])))

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
BBBBBBBBBB
B
view   save

correct output
10
10 9 8 7 6 5 4 3 2 1
view   save

user output
10
10 9 8 7 6 5 4 3 2 1
view   save

Test 2

Group: 1

Verdict: ACCEPTED

input
AABBABABAB
AB
view   save

correct output
6
1 9 7 5 3 2
view   save

user output
6
9 7 5 3 1 2
view   save

Test 3

Group: 1

Verdict: ACCEPTED

input
AABAAABAAA
AABAA
view   save

correct output
4
6 5 2 1
view   save

user output
4
6 5 2 1
view   save

Test 4

Group: 1

Verdict: ACCEPTED

input
BAAAAAABBB
BAAAAAABB
view   save

correct output
2
2 1
view   save

user output
2
2 1
view   save

Test 5

Group: 1

Verdict: ACCEPTED

input
AAABBABBAA
AAABBABBAA
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 6

Group: 1

Verdict: ACCEPTED

input
GGGGGGGGGG
G
view   save

correct output
10
10 9 8 7 6 5 4 3 2 1
view   save

user output
10
10 9 8 7 6 5 4 3 2 1
view   save

Test 7

Group: 1

Verdict: ACCEPTED

input
QUUQUUQUQU
QU
view   save

correct output
6
9 7 5 4 2 1
view   save

user output
6
9 7 5 4 2 1
view   save

Test 8

Group: 1

Verdict: ACCEPTED

input
DWXDWDWXHJ
DWXHJ
view   save

correct output
3
1 4 6
view   save

user output
3
1 4 6
view   save

Test 9

Group: 1

Verdict: ACCEPTED

input
FSOCRDGQBB
FSOCRDGQB
view   save

correct output
2
2 1
view   save

user output
2
2 1
view   save

Test 10

Group: 1

Verdict: ACCEPTED

input
OETMIMPUPD
OETMIMPUPD
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 11

Group: 1

Verdict: ACCEPTED

input
DOWEUOWUEU
DOWEU
view   save

correct output
-1
view   save

user output
-1
view   save

Test 12

Group: 1

Verdict: ACCEPTED

input
JQZYVSIWTE
JQZVYSIWTE
view   save

correct output
-1
view   save

user output
-1
view   save

Test 13

Group: 1

Verdict: ACCEPTED

input
ABABABABA
ABA
view   save

correct output
4
7 5 3 1
view   save

user output
4
7 3 5 1
view   save

Test 14

Group: 1

Verdict: ACCEPTED

input
AAAAAAAAAA
AAAAAAAAAB
view   save

correct output
-1
view   save

user output
-1
view   save

Test 15

Group: 2

Verdict: ACCEPTED

input
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...
B
view   save

correct output
100
100 99 98 97 96 95 94 93 92 91...
view   save

user output
100
100 99 98 97 96 95 94 93 92 91...
view   save

Test 16

Group: 2

Verdict: ACCEPTED

input
BABABAAAAAAAAAAAAAAAAAABABAAAA...
BABAAAAAAA
view   save

correct output
36
87 43 24 1 91 79 69 68 67 66 6...
view   save

user output
36
89 91 79 69 68 67 66 65 64 63 ...
view   save

Test 17

Group: 2

Verdict: ACCEPTED

input
ABABAAAAABABBBBAAAABBBBAABBBBB...
ABABAAAAABABBBBAAAABBBBAABBBBB...
view   save

correct output
22
51 50 43 41 31 28 26 24 21 20 ...
view   save

user output
22
51 50 43 41 31 28 26 24 21 20 ...
view   save

Test 18

Group: 2

Verdict: ACCEPTED

input
AAABABAAAABBBBBABABBAABBABABBA...
AABABAAAABBBBBABABBAABBABABBAB...
view   save

correct output
2
1 2
view   save

user output
2
1 2
view   save

Test 19

Group: 2

Verdict: ACCEPTED

input
AABABBBBBBAABBABABBBBBBAABBAAA...
AABABBBBBBAABBABABBBBBBAABBAAA...
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 20

Group: 2

Verdict: ACCEPTED

input
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS...
S
view   save

correct output
100
100 99 98 97 96 95 94 93 92 91...
view   save

user output
100
100 99 98 97 96 95 94 93 92 91...
view   save

Test 21

Group: 2

Verdict: ACCEPTED

input
NNNININIMNIMKLMXCNIMKLMXCDEIMK...
NIMKLMXCDE
view   save

correct output
18
1 2 3 74 5 79 58 7 84 64 37 10...
view   save

user output
18
74 79 84 91 58 64 67 49 27 37 ...
view   save

Test 22

Group: 2

Verdict: ACCEPTED

input
VYQFNHMVTKOEYCXWINLKLHVFMEPQEU...
VYQFNHMVTKOEYCXWINLKLHVFMEPQEU...
view   save

correct output
3
51 2 1
view   save

user output
3
51 2 1
view   save

Test 23

Group: 2

Verdict: ACCEPTED

input
IISNROLHLOJIWPTVFHFLUQRIROVLYP...
ISNROLHLOJIWPTVFHFLUQRIROVLYPM...
view   save

correct output
2
1 2
view   save

user output
2
1 2
view   save

Test 24

Group: 2

Verdict: ACCEPTED

input
WPMEMERJXXADLKONUZPUUFTPSXDHIV...
WPMEMERJXXADLKONUZPUUFTPSXDHIV...
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 25

Group: 2

Verdict: ACCEPTED

input
LNSBGZAWFJZAWFJWFJLNSBLNSBGZAL...
LNSBGZAWFJ
view   save

correct output
-1
view   save

user output
-1
view   save

Test 26

Group: 2

Verdict: ACCEPTED

input
IPIPYFUMRIPYFUMRLPIIIPYFIPYFUM...
IPYFUMRLPSYSBQWHGXQWLHBXMXXEYB...
view   save

correct output
-1
view   save

user output
-1
view   save

Test 27

Group: 2

Verdict: ACCEPTED

input
ABABABABABABABABABABABABABABAB...
ABA
view   save

correct output
49
97 95 93 91 89 87 85 83 81 79 ...
view   save

user output
49
95 97 91 93 87 89 83 85 79 81 ...
view   save

Test 28

Group: 2

Verdict: ACCEPTED

input
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
view   save

correct output
-1
view   save

user output
-1
view   save

Test 29

Group: 3

Verdict: ACCEPTED

input
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...
view   save

correct output
1000
1000 999 998 997 996 995 994 9...
view   save

user output
1000
1000 999 998 997 996 995 994 9...
view   save

Test 30

Group: 3

Verdict: ACCEPTED

input
BBBBBBBBAABBBBBBBBAABBBBBBBAAB...
view   save

correct output
218
1 626 607 519 415 5 975 957 92...
view   save

user output
194
980 984 991 971 958 950 964 96...
view   save

Test 31

Group: 3

Verdict: ACCEPTED

input
AABBBABAABABAAABBAAAAAAABBBAAB...
view   save

correct output
55
569 639 403 761 663 437 172 90...
view   save

user output
55
901 900 897 896 895 885 884 88...
view   save

Test 32

Group: 3

Verdict: ACCEPTED

input
ABBAAABAAABAAAAABBABABBABBABBB...
view   save

correct output
2
2 1
view   save

user output
2
2 1
view   save

Test 33

Group: 3

Verdict: ACCEPTED

input
BAAABBABBBAAAABAAAABBBBABAABAA...
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 34

Group: 3

Verdict: ACCEPTED

input
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU...
view   save

correct output
1000
1000 999 998 997 996 995 994 9...
view   save

user output
1000
1000 999 998 997 996 995 994 9...
view   save

Test 35

Group: 3

Verdict: ACCEPTED

input
KSBMRKKSBMRZXBDKSKSBMRZXBDAMRZ...
view   save

correct output
178
723 731 1 935 857 820 760 735 ...
view   save

user output
178
991 985 979 977 976 990 965 96...
view   save

Test 36

Group: 3

Verdict: ACCEPTED

input
ILYLILYLVJILYLVJZCCQDLFRLSXZDM...
view   save

correct output
21
671 54 747 504 113 1 856 764 5...
view   save

user output
22
856 901 671 608 747 764 796 50...
view   save

Test 37

Group: 3

Verdict: ACCEPTED

input
ZZJZNKHDLJBPXIAZNJIIGBEEJFSDAF...
view   save

correct output
2
1 2
view   save

user output
2
1 2
view   save

Test 38

Group: 3

Verdict: ACCEPTED

input
FIMWTOLSRKOWYDPCOFUJZMXJEJFKSU...
view   save

correct output
1
1
view   save

user output
1
1
view   save

Test 39

Group: 3

Verdict: ACCEPTED

input
AIVHCGUMKSTIYBRNPONXHRFVBKPYHX...
view   save

correct output
-1
view   save

user output
-1
view   save

Test 40

Group: 3

Verdict: ACCEPTED

input
QPMSLIDCLFLBEXGVVQQNSVKJYXGETC...
view   save

correct output
-1
view   save

user output
-1
view   save

Test 41

Group: 3

Verdict: ACCEPTED

input
ABABABABABABABABABABABABABABAB...
view   save

correct output
499
997 995 993 991 989 987 985 98...
view   save

user output
499
995 997 991 993 987 989 983 98...
view   save

Test 42

Group: 3

Verdict: ACCEPTED

input
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
view   save

correct output
-1
view   save

user output
-1
view   save