比赛 20241125 评测结果 WAAWWWAAAW
题目名称 又是决斗 最终得分 50
用户昵称 小金 运行时间 1.066 s
代码语言 C++ 内存使用 6.11 MiB
提交时间 2024-11-25 11:37:57
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,a[1000010],b[1000010],ans,s,t,tot;
  4. map<int,int> ys;
  5. int main()
  6. {
  7. freopen("duela.in","r",stdin);
  8. freopen("duela.out","w",stdout);
  9. scanf("%d",&n);
  10. for(int i=1;i<=n;i++)
  11. {
  12. scanf("%d",&a[i]);
  13. }
  14. sort(a+1,a+n+1);
  15. for(int i=1;i<=n;i++)
  16. {
  17. if(!ys[a[i]])
  18. {
  19. tot++;
  20. ys[a[i]]=tot;
  21. }
  22. b[ys[a[i]]]++;
  23. }
  24. s=b[1];
  25. for(int i=2;i<=tot;i++)
  26. {
  27. if(s>=b[i])
  28. {
  29. t+=b[i];
  30. s-=b[i];
  31. b[i]=0;
  32. }
  33. else
  34. {
  35. b[i]-=s;
  36. t+=s;
  37. s=0;
  38. if(b[i]<=t*2)
  39. {
  40. s+=(b[i]&1);
  41. t=(t*2+b[i])/2;
  42. b[i]=b[i]&1;
  43. }
  44. else
  45. {
  46. s+=(b[i]-t*2);
  47. b[i]=b[i]-t*2;
  48. t*=2;
  49. }
  50. }
  51. }
  52. ans=n-t*2;
  53. printf("%d",ans);
  54. return 0;
  55. }