// UVa 11059 - Maximum Product import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = 0; while (scanner.hasNextInt()) { int n = scanner.nextInt(); t++; boolean still_head = true; BigInteger head = BigInteger.ONE; BigInteger tail = BigInteger.ONE; BigInteger p = BigInteger.ONE; int m = 0; BigInteger s = BigInteger.ZERO; int count = 0; for (int i = 0; i < n; i++) { BigInteger a = scanner.nextBigInteger(); if (a.compareTo(BigInteger.ZERO) != 0) { m++; p = p.multiply(a); tail = tail.multiply(a); if (still_head) head = head.multiply(a); if (a.compareTo(BigInteger.ZERO) < 0) { tail = a; still_head = false; count++; } } else { BigInteger sol; if (p.compareTo(BigInteger.ZERO) > 0) sol = p; else { if (head.compareTo(tail) < 0) sol = p.divide(tail); else sol = p.divide(head); } if ((p.compareTo(BigInteger.ZERO) < 0 && m <= 1) || (m == 0)) sol = BigInteger.ZERO; if (sol.compareTo(s) > 0) s = sol; still_head = true; head = BigInteger.ONE; tail = BigInteger.ONE; p = BigInteger.ONE; m = 0; } } BigInteger sol; if (p.compareTo(BigInteger.ZERO) > 0) sol = p; else { if (head.compareTo(tail) < 0) sol = p.divide(tail); else sol = p.divide(head); } if ((p.compareTo(BigInteger.ZERO) < 0 && m <= 1) || (m == 0)) sol = BigInteger.ZERO; if (sol.compareTo(s) > 0) s = sol; System.out.println("Case #" + t + ": The maximum product is " + s + "."); System.out.println(); } } }
Wednesday, November 11, 2015
UVa 11059 - Maximum Product
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment