提交时间:2026-04-18 15:46:03
运行 ID: 436802
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; // 输入马的数量 cin >> n; vector<int> tian(n); // 田忌的马 vector<int> king(n); // 齐王的马 // 输入田忌的马速度 for (int i = 0; i < n; ++i) { cin >> tian[i]; } // 输入齐王的马速度 for (int i = 0; i < n; ++i) { cin >> king[i]; } // 排序:从小到大 sort(tian.begin(), tian.end()); sort(king.begin(), king.end()); // 双指针定义 int t_slow = 0, t_fast = n - 1; // 田忌:最慢、最快 int k_slow = 0, k_fast = n - 1; // 齐王:最慢、最快 int win = 0; // 获胜场数 while (t_slow <= t_fast) { // 情况1:田忌最快的马 > 齐王最快的马 → 直接赢 if (tian[t_fast] > king[k_fast]) { win++; t_fast--; k_fast--; } // 情况2:田忌最快的马 < 齐王最快的马 → 用最慢的马去输 else if (tian[t_fast] < king[k_fast]) { t_slow++; k_fast--; } // 情况3:最快的马相等 → 比较最慢的马 else { // 田忌最慢的马 > 齐王最慢的马 → 赢 if (tian[t_slow] > king[k_slow]) { win++; t_slow++; k_slow++; } // 否则用最慢的马去对战齐王最快的马 else { t_slow++; k_fast--; } } } // 输出最大获胜场数 cout << win << endl; return 0; }