fork download
  1. #include <bits/stdc++.h>
  2. #define rep(k,n) for(int i=k;i<n;i++)
  3. #define loop(k,n) for(int j=k;j<n;j++)
  4. using namespace std;
  5.  
  6. int main(){
  7. int t;
  8. cin>>t;
  9. rep(0,t){
  10. int n,p1=0,p2=0;
  11. cin>>n;
  12. string s[n];
  13. rep(0,n){
  14. cin>>s[i];
  15.  
  16.  
  17. }
  18.  
  19. rep(0,n){
  20. loop(0,n/2){
  21. if(s[i][j]=='1'){
  22. p1++;
  23. //ddd cout<<p1<<" ";
  24. }
  25. }
  26. }
  27. rep(0,n){
  28. loop(n/2,n){
  29. if(s[i][j]=='1'){
  30. p2++;
  31. // cout<<p2<<endl;
  32. }
  33. }
  34. }
  35. int arr[n]={0};
  36. rep(0,n){
  37. loop(0,n/2){
  38. if(s[i][j]=='1'){
  39. arr[i]++;
  40. }
  41. }
  42. loop(n/2,n){
  43. if(s[i][j]=='1'){
  44. arr[i]--;
  45. }
  46. }
  47.  
  48. }
  49. sort(arr,arr+n);
  50. rep(0,n){
  51. if(arr[i]<0){
  52. arr[i]=-arr[i];
  53. }
  54. }
  55. int max=arr[0];
  56. rep(0,n){
  57. if(max<arr[i]){
  58. max=arr[i];
  59. }
  60. }
  61. // cout<<max<<" ";
  62. int diff;
  63. if(p1>p2){
  64. diff=p1-p2;
  65. }
  66. else{
  67. diff=p2-p1;
  68. }
  69. int mindif=diff;
  70. //cout<<p1<<" "<<p2;
  71. // if(diff>=2*max){
  72. // diff-=2*max;
  73. // }
  74. // else{
  75. rep(0,n){
  76. cout<<"f"<<arr[i];
  77. if(diff>=2*arr[i]){
  78. diff=min(diff,diff-2*arr[i]);
  79. cout<<diff<<" ";
  80. }
  81. // }
  82. }
  83.  
  84. cout<<diff<<endl;
  85. }
  86. return 0;
  87. }
  88.  
  89.  
  90.  
  91.  
Success #stdin #stdout 0s 4544KB
stdin

2
6
100000
100000
100000
100000
010010
001100
4
0011
1100
1110
0001
stdout
f04 f04 f12 f10 f1f10
f2f1f1f20