本題是更難的那道,一場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