解法一、map
🔹 壓縮
課程代號最大是 499,而 499 = 0b111110011
每個課程代號占用 9 bits
5 個課程代號會占用 45 bits
把 5 個課程代號 壓縮到 long long
中
(壓縮前需要先排序)
然後用 unordered_map<>
儲存組合出現的次數
✅ 完整代碼
評分結果(參考) : AC (84ms, 1.3MB)
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
vector<int> nums(5);
while(true){
cin >> n;
if(n == 0) break;
int mx=0, cnt=1;
unordered_map<int, int> um;
for(int i=0; i<n; i++){
for(int& num : nums) cin >> num;
sort(nums.begin(), nums.end());
int k = nums[0] + (nums[1]<<9) + (nums[2]<<18) + (nums[3]<<27) + (nums[4]<<36);
um[k]++;
if(um[k] > mx){
mx = um[k];
cnt = 1;
}
else if(um[k] == mx){
cnt++;
}
}
cout << mx*cnt << "\n";
}
return 0;
}