leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1947.cpp (877B)
0 class Solution {
1 public:
2 int maxCompatibilitySum(vector<vector<int>> &students, vector<vector<int>> &mentors) {
3 const int n = students.size(), m = students[0].size();
4 uint16_t student[9] = {0}, mentor[9] = {0};
6 for (uint8_t i = 0; i < n; i++) {
7 for (const int n : students[i])
8 student[i] = (student[i] | n) << 1;
9 for (const int n : mentors[i])
10 mentor[i] = (mentor[i] | n) << 1;
11 }
13 uint8_t res = 0;
14 vector<uint8_t> idx(n);
15 iota(begin(idx), end(idx), 0);
16 do {
17 uint8_t count = 0;
18 for (uint8_t i = 0; i < n; i++) {
19 count += m - __builtin_popcount(student[i] ^ mentor[idx[i]]);
20 }
21 res = max(res, count);
22 } while (next_permutation(begin(idx), end(idx)));
24 return res;
25 }
26 };