import java.util.ArrayList;
import java.util.List;

/** Un comparador que resta da un orden incorrecto cuando la resta produce un overflow. */
public class OverflowDemo {

    public static void main(String[] args) {
        int a = -2_000_000_000;
        int b = 2_000_000_000;
        IO.println("a - b = " + (a - b) + "   Integer.compare(a, b) = " + Integer.compare(a, b));

        List<Integer> amounts = new ArrayList<>(List.of(b, a, 0));
        amounts.sort(new SubtractionOrder());
        IO.println("con resta:           " + amounts);
        amounts.sort(null);                         // null = orden natural de Integer
        IO.println("con Integer.compare: " + amounts);
    }
}
