Advertisement
a53

gard2

a53
Feb 24th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int t, n, k, ans, frecv[10005], a, b, nrA, nrB, v[100005];
  4.  
  5. int main()
  6. {
  7. freopen("gard.in", "r", stdin);
  8. freopen("gard.out", "w", stdout);
  9. scanf("%d", &t);
  10. while(t--)
  11. {
  12. a=b=-1;
  13. nrA=nrB=0;
  14. ans=1;
  15. scanf("%d",&n);
  16.  
  17. if(n<=100000)
  18. {
  19. for(int i=1;i<=n;++i)
  20. {
  21. scanf("%d", &v[i]);
  22. }
  23. sort(v+1,v+n+1);
  24. int temp=1;
  25. int index=1;
  26. while(index<=n)
  27. {
  28. while(v[index]==v[index+1]&&index<=n)
  29. ++temp,++index;
  30. if(temp>0)
  31. {
  32. if(a==-1)
  33. a=temp;
  34. else
  35. if(a==temp)
  36. ++nrA;
  37. else
  38. if(a!=-1&&a!=temp&&b==-1)
  39. b=temp;
  40. else
  41. if(b==temp)
  42. ++nrB;
  43. else
  44. if(a!=-1&&b!=-1&&a!=temp&&b!=temp)
  45. {
  46. ans=-1;
  47. break;
  48. }
  49. }
  50. ++index;
  51. temp=1;
  52. }
  53. if(b!=-1&&ans!=-1)
  54. {
  55. if(abs(a-b)>1)
  56. ans=0;
  57. if(a<b&&(nrA-nrB!=1)&&(nrA-nrB!=0))
  58. ans=0;
  59. if(b<a&&(nrB-nrA!=1)&&(nrB-nrA!=0))
  60. ans=0;
  61. }
  62. if(b!=-1&&ans!=-1&&((nrA==0&&a==1)||(b==1&&nrB==0)))
  63. ans=1;
  64. if(b!=-1&&ans!=-1&&(nrB==0&&((b-a==1)||(b-a==0))))
  65. ans=1;
  66. if(b!=-1&&ans!=-1&&(nrA==0&&((a-b==1)||(a-b==0))))
  67. ans=1;
  68. }
  69. else
  70. {
  71. memset(frecv,0,sizeof(frecv));
  72. for(int i=1;i<=n;++i)
  73. {
  74. scanf("%d",&k);
  75. ++frecv[k];
  76. }
  77. for(int i=1;i<=10000;++i)
  78. if(frecv[i]>0)
  79. {
  80. if(a==-1)
  81. a=frecv[i];
  82. else
  83. if(a==frecv[i])
  84. ++nrA;
  85. else
  86. if(a!=-1&&a!=frecv[i]&&b==-1)
  87. b=frecv[i];
  88. else
  89. if(b==frecv[i])
  90. ++nrB;
  91. else
  92. if(a!=-1&&b!=-1&&a!=frecv[i]&&b!=frecv[i])
  93. {
  94. ans=-1;
  95. break;
  96. }
  97. }
  98. if(b!=-1&&ans!=-1)
  99. {
  100. if(abs(a-b)>1)
  101. ans=0;
  102. if(a<b&&(nrA-nrB!=1)&&(nrA-nrB!=0))
  103. ans=0;
  104. if(b<a&&(nrB-nrA!=1)&&(nrB-nrA!=0))
  105. ans=0;
  106. }
  107. if(b!=-1&&ans!=-1&&((nrA==0&&a==1)||(b==1&&nrB==0)))
  108. ans=1;
  109. if(b!=-1&&ans!=-1&&(nrB==0&&((b-a==1)||(b-a==0))))
  110. ans=1;
  111. if(b!=-1&&ans!=-1&&(nrA==0&&((a-b==1)||(a-b==0))))
  112. ans=1;
  113. }
  114. printf("%d\n",ans>=1);
  115. }
  116. return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement