0
点赞
收藏
分享

微信扫一扫

POJ 2287:Tian Ji -- The Horse Racing


Tian Ji -- The Horse Racing


Time Limit: 5000MS

 

Memory Limit: 65536K

Total Submissions: 12585

 

Accepted: 3898


Description


Here is a famous story in Chinese history. 



Were Tian Ji lives in nowadays, he will certainly laugh at himself. Even more, were he sitting in the ACM contest right now, he may discover that the horse racing problem can be simply viewed as finding the maximum matching in a bipartite graph. Draw Tian's horses on one side, and the king's horses on the other. Whenever one of Tian's horses can beat one from the king, we draw an edge between them, meaning we wish to establish this pair. Then, the problem of winning as many rounds as possible is just to find the maximum matching in this graph. If there are ties, the problem becomes more complicated, he needs to assign weights 0, 1, or -1 to all the possible edges, and find a maximum weighted perfect matching... 



However, the horse racing problem is a very special case of bipartite matching. The graph is decided by the speed of the horses -- a vertex of higher speed always beat a vertex of lower speed. In this case, the weighted bipartite matching algorithm is a too advanced tool to deal with the problem. 



In this problem, you are asked to write a program to solve this special case of matching problem.


Input


The input consists of up to 50 test cases. Each case starts with a positive integer n ( n<=1000) on the first line, which is the number of horses on each side. The next n integers on the second line are the speeds of Tian's horses. Then the next n integers on the third line are the speeds of the king's horses. The input ends with a line that has a single `0' after the last test case.


Output


For each input case, output a line containing a single number, which is the maximum money Tian Ji will get, in silver dollars.


Sample Input


3 92 83 71 95 87 74 2 20 20 20 20 2 20 19 22 18 0


Sample Output


200 0 0


Source



迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>  
#include <algorithm>
#include <string.h>
using namespace std;
int a[1005],b[1005];
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 s=0;
for(int i=0,j=0,k=n-1,l=n-1; i<=k;)
{
if(a[i]>b[j])s++,i++,j++;
else if(a[k]>b[l])s++,k--,l--;
else
{
if(a[i]<b[l])s--;
i++,l--;
}
}
cout<<s*200<<endl;
}
return 0;
}



举报

相关推荐

0 条评论