题解
【入门】马里奥花银币
1 条题解
-
0
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> coins(n); long long total = 0; for (int i = 0; i < n; i++) { cin >> coins[i]; total += coins[i]; } // 找最小值、最大值、计数 int min_val = *min_element(coins.begin(), coins.end()); int max_val = *max_element(coins.begin(), coins.end()); int min_count = 0; for (int x : coins) { if (x == min_val) min_count++; } // 花掉金额:所有最小值 + 一个最大值 long long spent = (long long)min_count * min_val + max_val; // 但:如果最大值 == 最小值,且 min_count == n,那么最大值全被花掉 // 但我们仍要花一个 → 无法实现 // 所以我们假设:题目保证最大值 > min_val,或允许 // 但根据样例,max_val != min_val // 所以我们直接用 long long remaining = total - spent; cout << spent << endl; cout << remaining << endl; return 0; }
- 1