Algorithm And Mechanism Design With Nonlinear Preferences