// UVa 10700 - Camel trading import java.math.BigInteger; import java.util.ArrayList; import java.util.Scanner; public class Main { static class Pair { public BigInteger num; public char op; public Pair(BigInteger num, char op) { this.num = num; this.op = op; } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int tt = scanner.nextInt(); scanner.nextLine(); for (int t = 0; t < tt; t++) { String line = scanner.nextLine(); ArrayList<Pair> lista = new ArrayList<Pair>(); ArrayList<Pair> listb = new ArrayList<Pair>(); BigInteger num = BigInteger.ZERO; for (int i = 0; i < line.length(); i++) { if (line.charAt(i) >= '0' && line.charAt(i) <= '9') { num = num.multiply(BigInteger.valueOf(10)).add(BigInteger.valueOf(line.charAt(i) - '0')); } else if (line.charAt(i) == '*' || line.charAt(i) == '+') { lista.add(new Pair(num, line.charAt(i))); listb.add(new Pair(num, line.charAt(i))); num = BigInteger.ZERO; } } lista.add(new Pair(num, ' ')); listb.add(new Pair(num, ' ')); for (int i = 0; i < lista.size(); i++) { if (lista.get(i).op == '+') { lista.set(i, new Pair(lista.get(i).num.add(lista.get(i + 1).num), lista.get(i + 1).op)); lista.remove(i + 1); i--; } } BigInteger max = BigInteger.ONE; for (int i = 0; i < lista.size(); i++) { max = max.multiply(lista.get(i).num); } for (int i = 0; i < listb.size(); i++) { if (listb.get(i).op == '*') { listb.set(i, new Pair(listb.get(i).num.multiply(listb.get(i + 1).num), listb.get(i + 1).op)); listb.remove(i + 1); i--; } } BigInteger min = BigInteger.ZERO; for (int i = 0; i < listb.size(); i++) { min = min.add(listb.get(i).num); } System.out.println("The maximum and minimum are " + max + " and " + min + "."); } } }
Friday, September 11, 2015
UVa 10700 - Camel trading
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment