TopCoder SRM 657 Div1 Easy: ProblemSets
解法
二分探索するだけ。(なぜかできなかった)
コード
public class ProblemSets { public long maxSets(long E, long EM, long M, long MH, long H) { long low = 0; long high = Long.MAX_VALUE; while (high - low > 1) { long mid = (high + low) / 2; long tmpEM = EM - Math.max(0, mid - E); long tmpMH = MH - Math.max(0, mid - H); if (tmpEM < 0 || tmpMH < 0 || tmpEM + tmpMH - Math.max(0, mid - M) < 0) { high = mid; } else { low = mid; } } return low; } }