Submission #22567049


Source Code Expand

import sys
from heapq import *
import numpy as np

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

def from_read(dtype=np.int64):
    return np.fromstring(read().decode(), dtype=dtype, sep=' ')


def from_readline(dtype=np.int64):
    return np.fromstring(readline().decode(), dtype=dtype, sep=' ')

def main(N, A, B):
    """
    dp 関数の Fenchel 双対を slope trick で管理
    """
    INF = 1 << 60
    L = [INF]
    R = [INF]
    add_L = add_R = 0

    def push_L(x):
        heappush(L, -(x - add_L))

    def pushpop_L(x):
        return -heappushpop(L, -(x - add_L)) + add_L

    def top_L():
        return -L[0] + add_L

    def push_R(x):
        heappush(R, x - add_R)

    def pushpop_R(x):
        return heappushpop(R, x - add_R) + add_R

    def top_R():
        return R[0] + add_R

    min_f = 0
    for i in range(N):
        if i != 0:
            # dp に a|x| を加算する
            add_L -= A[i - 1]
            add_R += A[i - 1]
        c = -B[i]
        # -ax+a (-1<=x<=1) との畳み込み
        # 双対に |x-c| + c を加算する
        min_f += c

        r0 = top_R()
        min_f += max(0, c - r0)
        push_L(pushpop_R(c))
        l0 = top_L()
        min_f += max(0, l0 - c)
        push_R(pushpop_L(c))
    return -min_f

N = int(readline())
A = from_readline()
B = from_read()

print(main(N, A, B))

Submission Info

Submission Time
Task J - Farm Village
User maspy
Language Python (3.8.2)
Score 100
Code Size 1478 Byte
Status AC
Exec Time 1092 ms
Memory 49568 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 53
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 10_small_5, 10_small_6, 10_small_7, 10_small_8, 10_small_9, 20_medium_0, 20_medium_1, 20_medium_2, 20_medium_3, 20_medium_4, 20_medium_5, 20_medium_6, 20_medium_7, 20_medium_8, 20_medium_9, 30_large_0, 30_large_1, 30_large_2, 30_large_3, 30_large_4, 30_large_5, 30_large_6, 30_large_7, 30_large_8, 30_large_9, 50_biased_0, 50_biased_1, 50_biased_10, 50_biased_11, 50_biased_12, 50_biased_13, 50_biased_14, 50_biased_15, 50_biased_16, 50_biased_17, 50_biased_18, 50_biased_19, 50_biased_2, 50_biased_3, 50_biased_4, 50_biased_5, 50_biased_6, 50_biased_7, 50_biased_8, 50_biased_9
Case Name Status Exec Time Memory
00_sample_00 AC 116 ms 26628 KiB
00_sample_01 AC 113 ms 26836 KiB
00_sample_02 AC 118 ms 26896 KiB
10_small_0 AC 115 ms 26908 KiB
10_small_1 AC 114 ms 26872 KiB
10_small_2 AC 114 ms 26900 KiB
10_small_3 AC 114 ms 26856 KiB
10_small_4 AC 114 ms 26908 KiB
10_small_5 AC 112 ms 27076 KiB
10_small_6 AC 116 ms 26780 KiB
10_small_7 AC 113 ms 26872 KiB
10_small_8 AC 114 ms 27044 KiB
10_small_9 AC 112 ms 27060 KiB
20_medium_0 AC 118 ms 26828 KiB
20_medium_1 AC 118 ms 27040 KiB
20_medium_2 AC 115 ms 27116 KiB
20_medium_3 AC 113 ms 26968 KiB
20_medium_4 AC 115 ms 26820 KiB
20_medium_5 AC 118 ms 26836 KiB
20_medium_6 AC 111 ms 27040 KiB
20_medium_7 AC 115 ms 27208 KiB
20_medium_8 AC 116 ms 27076 KiB
20_medium_9 AC 117 ms 26944 KiB
30_large_0 AC 953 ms 46980 KiB
30_large_1 AC 598 ms 36952 KiB
30_large_2 AC 605 ms 37000 KiB
30_large_3 AC 148 ms 27652 KiB
30_large_4 AC 1020 ms 48032 KiB
30_large_5 AC 828 ms 42544 KiB
30_large_6 AC 702 ms 40988 KiB
30_large_7 AC 910 ms 45800 KiB
30_large_8 AC 248 ms 29888 KiB
30_large_9 AC 490 ms 34828 KiB
50_biased_0 AC 1092 ms 47364 KiB
50_biased_1 AC 1074 ms 49372 KiB
50_biased_10 AC 1063 ms 47516 KiB
50_biased_11 AC 1058 ms 47196 KiB
50_biased_12 AC 1069 ms 49484 KiB
50_biased_13 AC 1087 ms 49320 KiB
50_biased_14 AC 1064 ms 47416 KiB
50_biased_15 AC 1071 ms 47268 KiB
50_biased_16 AC 1075 ms 49168 KiB
50_biased_17 AC 1066 ms 49404 KiB
50_biased_18 AC 1063 ms 47412 KiB
50_biased_19 AC 1058 ms 49476 KiB
50_biased_2 AC 1058 ms 49568 KiB
50_biased_3 AC 1075 ms 49320 KiB
50_biased_4 AC 1068 ms 47228 KiB
50_biased_5 AC 1064 ms 49200 KiB
50_biased_6 AC 1079 ms 47148 KiB
50_biased_7 AC 1070 ms 47172 KiB
50_biased_8 AC 1075 ms 49320 KiB
50_biased_9 AC 1064 ms 49560 KiB