aboutsummaryrefslogtreecommitdiffstats
path: root/682/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--682/main.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/682/main.cpp b/682/main.cpp
new file mode 100644
index 0000000..25432b8
--- /dev/null
+++ b/682/main.cpp
@@ -0,0 +1,40 @@
+
+#include "header.hpp"
+#include <string>
+
+class Solution {
+public:
+ static int calPoints(std::vector<std::string> &ops) {
+ std::vector<int> result;
+ result.reserve(1000);
+ int sum = 0;
+ for (auto &iter : ops) {
+ if (iter == "+") {
+ auto dummy = result[result.size() - 1] + result[result.size() - 2];
+ result.push_back(dummy);
+ sum += dummy;
+ } else if (iter == "D") {
+ auto dummy = result[result.size() - 1] * 2;
+ result.push_back(dummy);
+ sum += dummy;
+ } else if (iter == "C") {
+ sum -= result[result.size() - 1];
+ result.pop_back();
+ } else {
+ auto dummy = std::stoi(iter);
+ result.push_back(dummy);
+ sum += dummy;
+ }
+ }
+
+ return sum;
+ }
+};
+
+int main(int argc, char **argv) {
+ std::vector<std::string> ops1 = {"5", "2", "C", "D", "+"};
+ std::vector<std::string> ops2 = {"5", "-2", "4", "C", "D", "9", "+", "+"};
+ std::cout << Solution::calPoints(ops1) << "\n";
+ std::cout << Solution::calPoints(ops2) << "\n";
+ return 0;
+}