记录编号 36048 评测结果 AAAAAAAAAA
题目名称 田忌赛马 最终得分 100
用户昵称 GravatarCzb。 是否通过 通过
代码语言 C++ 运行时间 0.584 s
提交时间 2012-03-08 16:16:15 内存使用 47.98 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. short n,ans,a[5001],b[5001],f[5001][5001];
  5.  
  6. short max(short a,short b)
  7. {
  8. return a>b?a:b;
  9. }
  10.  
  11. short s(short a,short b)
  12. {
  13. if(a>b)
  14. return -1;
  15. else if(a<b)
  16. return 1;
  17. else
  18. return 0;
  19. }
  20.  
  21. int cmp(const void *a,const void *b)
  22. {
  23. return *(short *)a-*(short *)b;
  24. }
  25.  
  26. int main()
  27. {
  28. freopen("horsea.in","r",stdin);
  29. freopen("horsea.out","w",stdout);
  30. int i,j;
  31. scanf("%d",&n);
  32. for(i=1;i<=n;i++)
  33. {
  34. scanf("%d",&a[i]);
  35. }
  36. for(i=1;i<=n;i++)
  37. {
  38. scanf("%d",&b[i]);
  39. }
  40. qsort(a+1,n,2,cmp);
  41. qsort(b+1,n,2,cmp);
  42. for(i=1;i<=n;i++)
  43. {
  44. f[i][0]=f[i-1][0]+s(a[n-i+1],b[i]);
  45. for(j=1;j<i;j++)
  46. {
  47. f[i][j]=max(f[i-1][j]+s(a[n-i+1],b[i-j]),f[i-1][j-1]+s(a[n-i+1],b[n-j+1]));
  48. }
  49. f[i][i]=f[i-1][i-1]+s(a[n-i+1],b[n-i+1]);
  50. }
  51. ans=-10000;
  52. for(i=0;i<=n;i++)
  53. {
  54. if(f[n][i]>ans)
  55. ans=f[n][i];
  56. }
  57. printf("%d\n",ans);
  58. return 0;
  59. }