Addition Before Multiplication and Functions (APCS 2023-01 Advanced)

Points 100 1.0s 256M

You are given an expression consisting of numbers, +, *, and a function \(f\). No parentheses occur except those belonging to function calls. Evaluate the expression using addition before multiplication; that is, + has higher precedence than *.

The function \(f(x_1,x_2,\ldots)\) accepts any positive number of arguments, each of which is itself a valid expression. Its value is the maximum argument value minus the minimum argument value. For example, \(f(3,6,2)=6-2=4\), while \(f(3)=0\).

Input

The input contains one valid expression without whitespace.

Constraints

  • The expression length is at most \(500\).
  • Every number in the expression is between \(0\) and \(200\).
  • No parentheses occur except those belonging to function calls.
  • The expression is guaranteed to be valid.
  • Intermediate values and the answer may exceed \(2^{31}\) but do not exceed \(10^{17}\).

Output

Output the value of the expression evaluated using addition before multiplication.

Scoring

There are \(20\) scored test cases. Each test case is worth \(5\) points.

Subtask Points Additional constraints
1 30 The expression contains only numbers, +, and *
2 70 No additional constraints

Sample Input 1

2+3*1+2+1

Sample Output 1

20

Sample Input 2

12+f(13,2+f(8,1+2*3),1+1*f(20,4)*f(2))*2

Sample Output 2

50

Sample Input 3

f(0)

Sample Output 3

0

Source

APCS January 2023, Programming Problem 3; ZeroJudge j607 Addition Before Multiplication and Functions.

Problem page help

Keyboard shortcuts

Main features

  • Sample tests — Runs the sample cases bundled with the problem and auto-compares against the expected output.
  • Custom test — Run your code with your own stdin. Optionally tick the "Compare with expected (diff)" box to verify against expected output line-by-line.
  • Template — Paste the default code template you set on your profile page.
  • Collab — Edit this problem together with classmates in real time.
  • Auto-draft — Editor contents auto-save to your browser every 1.5 seconds (per account / problem / language).
  • Submit — Send your code to the judge for grading; returns AC / WA / TLE etc.

Limits

  • Source code: at most 65,536 characters
  • Custom test stdin and expected output: at most 1 MB each (≈1 million characters)
  • Custom test and sample test share the sandbox; about 1 request per 3 s per user (sample test: 1 per 1 s)
  • Custom test and sample test both have a 15 second wall-clock cap (the official judge still uses the problem time limit)
  • Interactive problems do not offer custom test (cannot simulate interaction with the judge).
  • Submitting has no rate limit, but rapid repeated submissions on the same problem are treated as score farming.