Problem Description
“田忌赛马”是中国历史上一个著名的故事。
大约2300年前,齐国大将田忌喜欢和国王赛马,并且约定:每赢一场,对方就要付200元。
假设已知田忌和国王的各自马匹的速度都不相同,请计算田忌最好的结果是什么。
Input
输入包含多组测试样例。
每组样例的第一行是一个整数n(n <= 1000),表示田忌和国王各自参赛的马匹数量。
接下来一行的n个整数表示田忌的马的速度,再接下来一行的n个整数表示国王的马的速度。
n为0时,表示输入数据的结束。
Output
每组数据输出一行,表示田忌最多能够赢得的金额。
Sample input
3
92 83 71
95 87 74
2
20 19
22 18
0
Sample output
200
0
贪心,双指针
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N],b[N];
int main()
{
int n;
while(cin>>n,n)
{
for(int i=0;i<n;++i) cin>>a[i];
for(int i=0;i<n;++i) cin>>b[i];
sort(a,a+n);sort(b,b+n);
int res,cnt=0;
for(int i=0,j=0;i<n&&j<n;i++)
{
if(a[i]>b[j]) cnt++,j++;
}
res=cnt*200+(cnt-n)*200;
cout<<res<<'\n';
}
}