雇用主が支払うべき総額があり、この金額をスタッフ間で分割する必要があります。
例えば
a $100
b $200
c -$200
d -$200
e $500
支払うべき合計金額は、すべてのアイテムの合計で、この場合は $400 です。
問題は、サードパーティのシステムを呼び出して、これらの金額を 1 つずつ割り当てなければならないことです。しかし、配分中に残高が 0 ドルを下回ったり、合計金額 (400 ドル) を上回ったりすることはありません。
したがって、上記の順序で挿入すると、a、b、c が機能するため、現在割り当てられている合計 = 100 + 200 - 200 = $100 になります。ただし、dを割り当てようとすると。システムは -$200 を追加しようとします。これにより、現在割り当てられている合計が -$100 になります。これは $0 未満であり、許可されていないため、システムによって拒否されます。
リストをソートすると、負の項目が最後になります。すなわち
a $100
b $200
e $500
c -$200
d -$200
a は機能し、b も機能しますが、e を挿入しようとすると、上限の $400 を超えているため、資金不足エラーが発生します。特効薬はなく、壊れるシナリオが常にあることに気づきました。ただし、ほとんどの場合に機能するソリューションを考え出したかったのです。
データの通常のサンプルには、5 ~ 100 項目があります。負の金額を含むものはわずか 2 ~ 15% です。
リストを並べ替える賢い方法はありますか? または、割り当てられたものを複数回試すだけの方がよいでしょうか。たとえば、ポジティブとネガティブを 2 つのリストに分割します。1 つのエラーが発生するまでポジティブを挿入し、次にエラーが発生するまでネガティブを挿入し、リストがすべて割り当てられるまで、または両方がエラーになるまでリストを切り替えます。