### 2012 Canadian Computing Competition, Stage 1

## Problem S2: Aromatic Numbers

This question involves calculating the value of *aromatic numbers*
which are a combination of Arabic digits and Roman numerals.

An aromatic number is of the form `ARARAR`...`AR`, where
each `A` is an Arabic digit, and each `R` is a Roman
numeral. Each pair `AR` contributes a value described below, and by
adding or subtracting these values together we get the value of the entire
aromatic number.

An Arabic digit `A`, can be 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9. A
Roman numeral `R` is one of the seven letters I, V, X, L, C, D, or M.
Each Roman numeral has a base value:

Symbol | I | V | X | L | C | D | M |

Base value | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |

The value of a pair `AR` is `A` times the base value of
`R`. Normally, you add up the values of the pairs to get the overall
value. However, wherever there are consecutive symbols `ARA'R'` with
`R'` having a *strictly bigger* base value than `R`,
the value of pair `AR` must be *subtracted* from the total,
instead of being added.

For example, the number 3M1D2C has the value 3×1000 + 1×500 + 2*100 = 3700 and 3X2I4X has the value 3×10 - 2×1 + 4×10 = 68.

Write a program that computes the values of aromatic numbers.

### Input Format

The input is a valid aromatic number consisting of between 2 and 20 symbols.

### Output Format

The output is the decimal value of the given aromatic number.

### Sample Input 1

3M1D2C

### Sample Output 1

3700

### Sample Input 2

2I3I2X9V1X

### Sample Output 2

-16

All Submissions

Best Solutions

**Point Value:** 5

**Time Limit:** 2.00s

**Memory Limit:** 16M

**Added:** Feb 29, 2012

**Languages Allowed:**

C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, TEXT, PHP, SCM, CAML, PERL, C#, C++11, PYTH3

## Comments (Search)

Hisownmotheron Apr 17, 2017 - 3:50:46 am UTC java .splithezeyu2007on Jan 26, 2018 - 12:10:52 am UTC Re: java .splitjargonon Jan 26, 2018 - 7:16:38 am UTC Re: java .splitThis is changed in Java 8.

Please take into account the extra first element, as the judge is on Java 7. Alternatively, use "abc".split("(?!^)"), which will not produce an initial character on either Java 7 or 8 (but breaks on unicode input).

SUPER_ET_DUPERon Feb 06, 2015 - 8:41:10 pm UTC Problem description missing!The problem description is here : http://cemc.uwaterloo.ca/contests/computing/2012/stage1/seniorEn.pdf

fifimanon Feb 06, 2015 - 8:48:59 pm UTC Re: Problem description missing!SUPER_ET_DUPERon Feb 06, 2015 - 9:00:48 pm UTC Re: Problem description missing!bbi5291on Feb 06, 2015 - 10:13:24 pm UTC Re: Problem description missing!EDIT: Fixed.

Danon Jul 04, 2012 - 10:25:46 pm UTC Compiling Errorjargonon Jul 04, 2012 - 11:13:01 pm UTC Re: Compiling Error