From 185ef9fcb0e59f13e9ee0ccb261693cdaddebab0 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 23 Feb 2021 21:07:19 +0800 Subject: import(solutions): Move leetcode solutions to subdir. --- works/solutions/leetcode/cpp/649.cpp | 67 ++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 works/solutions/leetcode/cpp/649.cpp (limited to 'works/solutions/leetcode/cpp/649.cpp') diff --git a/works/solutions/leetcode/cpp/649.cpp b/works/solutions/leetcode/cpp/649.cpp new file mode 100644 index 0000000..ab702d2 --- /dev/null +++ b/works/solutions/leetcode/cpp/649.cpp @@ -0,0 +1,67 @@ +#include + +using std::string; + +#include + +class Solution +{ +public: + string predictPartyVictory(string senate) + { + std::queue queue; + + int r_people = 0; + int d_people = 0; + int r_ban = 0; + int d_ban = 0; + + for (auto i = senate.cbegin(); i != senate.cend(); ++i) + { + if (*i == 'R') + { + r_people += 1; + queue.push(true); + } + else + { + d_people += 1; + queue.push(false); + } + } + + while (r_people && d_people) + { + bool is_r = queue.front(); + queue.pop(); + if (is_r) + { + if (d_ban) + { + r_people -= 1; + d_ban -= 1; + } + else + { + r_ban += 1; + queue.push(is_r); + } + } + else + { + if (r_ban) + { + d_people -= 1; + r_ban -= 1; + } + else + { + d_ban += 1; + queue.push(is_r); + } + } + } + + return r_people ? "Radiant" : "Dire"; + } +}; -- cgit v1.2.3