#include #include /** * 1996. The Number of Weak Characters in the Game * You are playing a game that contains multiple characters, and each of the characters has two main properties: attack and defense. You are given a 2D integer array properties where properties[i] = [attacki, defensei] represents the properties of the ith character in the game. * * A character is said to be weak if any other character has both attack and defense levels strictly greater than this character's attack and defense levels. More formally, a character i is said to be weak if there exists another character j where attackj > attacki and defensej > defensei. * * Return the number of weak characters. */ class Solution { public: static int numberOfWeakCharacters(std::vector>& properties) { std::sort(properties.begin(), properties.end(), [](const std::vector& x, const std::vector& y) { if (x[0] - y[0]) return x[0] > y[0]; return x[1] < y[1]; }); int ret = 0, max = -1; for (const auto& i : properties) if ((max = std::max(i[1], max)) > i[1]) ++ret; return ret; } }; int main() { std::vector> args = {{1,1},{2,1},{2,2},{1,2}}; std::cout << Solution::numberOfWeakCharacters(args); return 0; }