[AtCoder]ABC125 D-Flipping Sign

【問題】https://atcoder.jp/contests/abc125/tasks/abc125_d

問題キャプチャ

【方針】マイナスの数が奇数ならば\(1\)個だけマイナスになり、偶数ならばすべてプラスにできる。

【提出コード】

#atcoder template
def main():
    import sys
    input = sys.stdin.readline
    #文字列入力の時は上記はerrorとなる。
    #ここにコード
    #input
    n = int(input())
    a = list(map(int, input().split()))

    #output
    #マイナスの数が偶数なら、全てプラスにできる
    #マイナスの数が奇数ならば、1個だけマイナスになる。
    answer = 0
    pm_count = sum([i < 0 for i in a])
    for i in range(n):
        answer += abs(a[i])

    if pm_count % 2:
        print(answer-2*min([abs(i) for i in a]))
    else:
        print(answer)

    #N = 1のときなどcorner caseを確認!
if __name__ == "__main__":
    main()

【提出結果】https://atcoder.jp/contests/abc125/submissions/26530747

文字でリストを受け取り、マイナスを削除して渡すのが早いようだ。

コメント

タイトルとURLをコピーしました