BOJ 2467溶液
5215 ワード
https://www.acmicpc.net/problem/2467
2秒、128 MBメモリ
input : N (2 <= n <= 100,000) 溶液の特性値(-1000億円<=溶液<=1億円)<-昇順で入力します. output :
2つの溶液の特性値はに出力され、0に最も近い溶液を生成することができる.
条件: が2つ以上ある場合、いずれかの が出力される.
入力が昇順で入力されているか、2つの部分に分かれている場合は、2つのポインタから考えます.
始点と終点から2つの値で移動します.
加算された絶対値が前の値より小さい場合は、正解が更新されます.
加算値が正の値の場合は、値の大きい側(右側)のポインタ-1を小さくします.
負の値の場合は、値を増やし、小さな(左)エッジのポインタを+1にします.
2秒、128 MBメモリ
input :
2つの溶液の特性値はに出力され、
条件:
入力が昇順で入力されているか、2つの部分に分かれている場合は、2つのポインタから考えます.
始点と終点から2つの値で移動します.
加算された絶対値が前の値より小さい場合は、正解が更新されます.
加算値が正の値の場合は、値の大きい側(右側)のポインタ-1を小さくします.
負の値の場合は、値を増やし、小さな(左)エッジのポインタを+1にします.
import sys
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
start = 0
end = len(data) - 1
ret = [0, 0]
val, flag = 9999999999999, 1
while start < end:
mix = data[start] + data[end]
if abs(mix) < val:
ret = [data[start], data[end]]
val = abs(mix)
if mix > 0:
end -= 1
elif mix < 0:
start += 1
else:
print(data[start], data[end])
flag = 0
break
if flag:
print(ret[0], ret[1])
しかも価格の範囲が10億なので、最大の差は20億です.Reference
この問題について(BOJ 2467溶液), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/BOJ-2467-용액テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol