A. C\*++ хэл дээрх тооцоолол

хугацааны хязгаарлалт 2 секунд

санах ойн хязгаарлалт 64 мегабайт

оролт стандарт оролт

гаралт стандарт гаралт

C*++ нь C++ хэлтэй үнэхээр төстэй хэл юм. Төстэй байдал нь C*++ хэл дээр бичсэн программууд нь заримдаа үнэхээр таамаглаагүй, урьдаас мэдэшгүй үр дүн үзүүлэх тал дээр харагддаг ажээ. Жишээлбэл, дараах байдалтай харагдах C*++ дээрх арифметик илэрхийллийг авч үзье ($илэрхийлэл$ гэдэг нь үндсэн илэрхийлэл байна):

  • $илэрхийлэл$ ::= $нэмэгдэхүүн$ | $илэрхийлэл + нэмэгдэхүүн$ | $илэрхийлэл - нэмэгдэхүүн$
  • $нэмэгдэхүүн$ ::= $өсөлт$ | $коэффициент$*$өсөлт$
  • $өсөлт$ ::= a++ | ++a
  • $коэффициент$ ::= 0|1|2|...|1000

Жишээлбэл, "5*a++-3*++a+a++" гэдэг нь C*++ дээрх хүчин төгөлдөр илэрхийлэл юм.

Түүнчлэн бидэнд "$+$" болон "$-$" тэмдэгтүүдээр тусгаарлагдсан хэд хэдэн нэмэгдэхүүнүүдээс тогтох илэрхийлэл байв. Нэмэгдэхүүн болгон нь "$a++$" эсвэл "$++a$"-ыг ямар нэгэн бүхэл тоон коэффициентээр үржүүлсэн илэрхийлэл байх юм. Хэрэв ямар нэгэн коэффициент бичээгүй байвал үүнийг $1$-тэй тэнцүү гэж үзнэ үү.

C*++ дээрх уг илэрхийллийн тооцоолол нь дараах байдлаар явагдана. Эхлээд бүх нэмэгдэхүүнүүдийг нэг нэгээр нь тооцоолох ба дараа нь тэдгээрийг энгийн арифметик дүрмүүдийг ашиглан нэмэх юм. Хэрэв нэмэгдэхүүн нь "$a++$"-ыг агуулж байвал нийлбэрийг тооцоолохдоо эхлээд "$a$" хувьсагчийн утгыг коэффициентээр үржүүлэх бөгөөд дараа нь "$a$"-ын утгыг $1$-ээр нэмэгдүүлнэ. Хэрэв нэмэгдэхүүн нь "$++a$"-ыг агуулж байвал уг үйлдлийг урвуу дарааллаар хийх юм: эхлээд "$a$"-г $1$-ээр нэмэгдүүлж дараа нь коэффициентээр үржүүлнэ.

Нэмэгдэхүүнүүдийг ямар ч дарааллаар тооцоолж болох ба ийм учраас л тооцооллын үр дүн нь заримдаа таамаглаагүй үр дүн гардаг ажээ. Таны даалгавар бол уг тооцооллын боломжит хамгийн их утгыг олох юм.

Оролт

Эхний мөрөнд бүхэл тоо $a$ ($ - 1000 ≤ a ≤ 1000$) өгөгдөх ба энэ нь "$a$" хувьсагчийн анхны утгыг илэрхийлнэ. Дараагийн мөрөнд дээр дүрсэлсэн хэлбэрийн дагуу бичигдсэн C*++ хэл дээрх нэгэн илэрхийлэл өгөгдөнө. Уг илэрхийлэл доторх нэмэгдэхүүний тоо нь $1000$-аас хэтрэхгүй байна. Мөн илэрхийллийг агуулж буй мөр нь ямар ч хоосон зай агуулаагүй байна.

Гаралт

Өгөгдсөн илэрхийллийн боломжит хамгийн их утгыг хэвлэнэ үү.

Орчуулсан: Баатархүү

Жишээ тэстүүд

Оролт
1
5*a++-3*++a+a++
Гаралт
11
Оролт
3
a+++++a
Гаралт
8

Тэмдэглэл

2-дахь жишээг авч үзье. Анхандаа $a = 3$ байна. Эхлээд эхний нэмэгдэхүүнийг тооцоолж, дараа нь 2-дахь нэмэгдэхүүнийг тооцоолох дарааллыг авч үзье. Эхний нэмэгдэхүүн нь $3$-тай тэнцүү болох ба $a$-ын утга нь $1$-ээр ихсэх юм. 2-дахь нэмэгдэхүүнийг тооцоолох явцад $a$ нь дахин нэг удаа нэмэгдэх ба ингэснээр $5$-тай тэнцүү болох юм. 2-дахь нэмэгдэхүүний утга нь $5$ байх бөгөөд ингэснээр нийт нийлбэр нь $8$ болж байна. Хэрэв бид 2-дахь нэмэгдэхүүнийг эхэлж тооцоолон, эхний нэмэгдэхүүнийг дараа нь тооцоолох дарааллаар бодвол 2 нэмэгдэхүүн нь 2-уулаа $4$-тэй тэнцүү болох ба ингэснээр хариу нь мөн л $8$ гарна.

Сэтгэгдлүүдийг ачааллаж байна...