分析:
刚开始用二分匹配,超时了,后来用遍历。先找到国王马中第一个比田忌最快的马慢的马的标号i,然后从i开始遍历,每次都找出从i开始的情况下的胜的场数,求出最大胜场。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int cmp(const void*a,const void*b)
{
int *c,*d;
c=(int*)a;
d=(int*)b;
return *d-*c;
}
int main()
{
int n;
int i,j,k;
int ans,t;
int a[1011],b[1011];
while(scanf("%d",&n)!=-1&&n)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
qsort(a,n,sizeof(int),cmp);
qsort(b,n,sizeof(int),cmp);
for(i=0;i<n;i++)
if(b[i]<=a[0])break;
ans=-n;
for(;i<n;i++)
{
t=-i;
j=0;k=i;
while(j<n&&k<n)
{
if(a[j]>b[k])t++;
else if(a[j]<b[k])t--;
j++;k++;
}
if(ans<t)ans=t;
}
printf("%d\n",ans*200);
}
return 0;
}