Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with open('/Users/alex26/Desktop/27A.txt', 'r') as f:
- data = [int(i) for i in f.read().strip().split('\n')][1:]
- k = 123
- pref = [0] * k
- prefdl = [0] * k
- s = 0
- s_min, dl_max = 10 ** 10, 0
- for i in range(len(data)):
- x = data[i]
- dl = i + 1
- s += x
- if s % k == 0 and pref[s % k] == 0:
- if s < s_min:
- dl_max = dl
- s_min = s
- elif s == s_min and dl > dl_max:
- dl_max = dl
- s_min = s
- elif pref[s % k] != 0 and s % k == 0:
- if s < s_min:
- dl_max = dl
- s_min = s
- elif s == s_min and dl > dl_max:
- dl_max = dl
- s_min = s
- st = s - pref[s % k]
- new_dl = abs(dl - prefdl[s % k])
- if st < s_min:
- dl_max = new_dl
- s_min = st
- elif st == s_min and new_dl > dl_max:
- dl_max = new_dl
- s_min = st
- elif pref[s % k] != 0 and s % k != 0:
- st = s - pref[s % k]
- new_dl = abs(dl - prefdl[s % k])
- if st < s_min:
- dl_max = new_dl
- s_min = st
- elif st == s_min and new_dl > dl_max:
- dl_max = new_dl
- s_min = st
- pref[s % k] = min(s, pref[s % k]) if pref[s % k] != 0 else s
- prefdl[s % k] = dl
- print(dl_max, s_min)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement