本题是更难的那道,一场50 最低为o
第一行一个整数 𝑛n ,表示他们各有几匹马(两人拥有的马的数目相同)。第二行 𝑛n 个整数,每个整数都代表田忌的某匹马的速度值(0≤0≤ 速度值 ≤100≤100)。第三行 𝑛n 个整数,描述齐王的马的速度值。两马相遇,根据速度值的大小就可以知道哪匹马会胜出。如果速度值相同,则和局,谁也不拿钱。
代码:
#include<bits/stdc++.h>
using namespace std;
int n, a[100068], b[102030], ans, im, in, jm, jjn;
bool cmp(int e, int t) {return e > t;
}
int main() {cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++)cin >> b[i];sort(a + 1, a + n + 1, cmp);sort(b + 1, b + n + 1, cmp);for (im = 1, jm = 1, in = n, jjn = n; im <= in;) {if(b[1]<a[n]){cout<<50*n;return 0;}if (a[im] > b[jm]) {ans+=50;im++, jm++;}if (a[im] < b[jm]) {ans-=50;in--, jm++;}if (a[im] == b[jm]) {if (a[in] > b[jjn]) {ans+=50;in--;jjn--;} else {if (a[in] < b[jm])ans -=50;in--;jm++;}}}
cout << ans;
return 0;
}
ele