Untitled
unknown
c_cpp
a year ago
1.8 kB
6
Indexable
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
// Function to calculate the maximum beauty of a string after N rounds
int calculate_max_beauty(const string& s, int N) {
int M = s.size();
unordered_map<char, int> freq;
// Calculate the frequency of each character in the string
for (char c : s) {
freq[c]++;
}
// Find the maximum frequency of any character in the string
int max_freq = 0;
for (const auto& [char_, count] : freq) {
max_freq = max(max_freq, count);
}
// Calculate the potential maximum beauty after N changes
// If all characters are already the same and N > 0, adjust for edge cases
if (max_freq == M && N == 1) {
return M - 1; // Can only decrease beauty in this case
}
return min(M, max_freq + N); // Maximum frequency is limited by the string's length
}
string solve(int N, int M, const string& P, const string& Q, const string& R) {
// Calculate the maximum beauty for each string
int bob_beauty = calculate_max_beauty(P, N);
int ben_beauty = calculate_max_beauty(Q, N);
int mike_beauty = calculate_max_beauty(R, N);
// Determine the winner or if it's a draw
if (bob_beauty > ben_beauty && bob_beauty > mike_beauty) {
return "Bob";
} else if (ben_beauty > bob_beauty && ben_beauty > mike_beauty) {
return "Ben";
} else if (mike_beauty > bob_beauty && mike_beauty > ben_beauty) {
return "Mike";
} else {
return "Draw";
}
}
int main() {
// Input handling
int N, M;
string P, Q, R;
cin >> N >> M >> P >> Q >> R;
// Output the result
cout << solve(N, M, P, Q, R) << endl;
return 0;
}
Editor is loading...
Leave a Comment