19C - Deletion of Repeats - CodeForces Solution


greedy hashing string suffix structures *2200

Please click on ads to support us..

Python Code:

import sys
n=int(input())
a=list(map(int,input().split()))
M=10**9+1
g={}
for i in range(n):
    g[a[i]]=g.get(a[i],[])+[i]
p=[1]
for i in range(n):
    p+=[hash(M*p[-1])]
h=[0]*(n+1)
for i in range(n):
    h[i+1]=hash(h[i]*M+a[i])
gh=lambda k,l:hash(h[k+l]-h[k]*p[l])%sys.hash_info.modulus
i,t=0,0
while i < n:
    for j in g[a[i]]:
        if j <= i:
            continue
        w=j-i
        if j+w<=n and gh(i,w)==gh(j,w):
            i=j-1
            t=max(t,j)
            break
    i+=1
r=a[t:]
print(len(r))
print(*r)


Comments

Submit
0 Comments
More Questions

742A - Arpa’s hard exam and Mehrdad’s naive cheat
1492A - Three swimmers
1360E - Polygon
1517D - Explorer Space
1230B - Ania and Minimizing
1201A - Important Exam
676A - Nicholas and Permutation
431A - Black Square
474B - Worms
987B - High School Become Human
1223A - CME
1658B - Marin and Anti-coprime Permutation
14B - Young Photographer
143A - Help Vasilisa the Wise 2
320A - Magic Numbers
1658A - Marin and Photoshoot
514A - Chewbaсca and Number
382A - Ksenia and Pan Scales
734B - Anton and Digits
1080A - Petya and Origami
1642D - Repetitions Decoding
1440A - Buy the String
1658F - Juju and Binary String
478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing