zoj 2387

时间:2024-06-03 08:34:20

额  一个贪心  好难想到 ......

#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std; int a[1010];
int b[1010];
int flag1,flag2,flag3,flag4;
int main()
{
int n;
while(scanf("%d",&n) && n)
{
for(int i = 0 ; i < n; i++)
{
scanf("%d",&a[i]);
}
for(int i = 0 ; i < n; i++)
{
scanf("%d",&b[i]);
}
sort(a, a+n);
sort(b, b+n);
int sum = 0;
flag1 = flag2 = 0;
flag3 = flag4 = n-1;
while(flag1 <= flag3)
{
if(a[flag1] > b[flag4])
{
sum += (flag3-flag1+1)*200;
break;
}
else if(a[flag3] > b[flag4])
{
--flag3;
--flag4;
sum += 200;
}
else if(a[flag3] < b[flag4])
{
++flag1;
--flag4;
sum -= 200;
}
else if(a[flag3] == b[flag4])
{
if(a[flag1] > b[flag2])
{
++flag1;
++flag2;
sum += 200;
}
else if(a[flag1] < b[flag2])
{
++flag1;
--flag4;
sum -= 200;
}
else if(a[flag1] == b[flag2])
{
if(a[flag1] == b[flag4]) break;
else if(a[flag1] < b[flag4])
{
++flag1;
--flag4;
sum -= 200;
}
}
}
}
printf("%d\n",sum);
}
return 0;
}