Submission #113009

#TimeUsernameProblemLanguageResultExecution timeMemory
113009jh05013Pinball (JOI14_pinball)Cpython 3
0 / 100
24 ms3436 KiB
input = __import__('sys').stdin.readline MIS = lambda: map(int,input().split()) INF = 10**18 n, m = MIS() plat = [tuple(MIS()) for i in range(n)] C = set() for l, r, c, cost in plat: C|= {l,r,c} C = dict(zip(sorted(C), range(len(C)))) plat = [(C[l], C[r], C[c], cost) for l, r, c, cost in plat] # dpl[i] = "min cost where ball starting from #1 falls to i-th platform" # TODO: change to RMQ dpl = [] for i in range(n): l, r, c, cost = plat[i] if l == 0: dpl.append(cost) continue dpl.append(cost + min((dpl[j] for j in range(i) if l<=plat[j][2]<=r), default = INF)) # dpu[i] = "min cost where ball starting from #m falls to i-th platform" dpr = [] for i in range(n): l, r, c, cost = plat[i] if r == len(C)-1: dpr.append(cost) continue dpr.append(cost + min((dpr[j] for j in range(i) if l<=plat[j][2]<=r), default = INF)) ans = min(dpl[i]+dpr[i]-plat[i][3] for i in range(n)) print(ans if ans < INF else -1)
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...