Advertisement
a53

tabla

a53
Dec 1st, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. #include <fstream>
  2. #define N 22
  3. using namespace std;
  4. ifstream fin("tabla.in");
  5. ofstream fout("tabla.out");
  6. int a[N][N],n;
  7. void Citire()
  8. {
  9. int i,j;
  10. fin>>n;
  11. for(i=1; i<=n; i++)
  12. for(j=1; j<=n; j++) fin>>a[i][j];
  13. fin.close();
  14. }
  15. int PLinie(int l, int c)
  16. {
  17. int i,ct=1;
  18. i=c-1;
  19. while(i>=1 && a[l][i]==a[l][c])
  20. {
  21. ct++;
  22. i--;
  23. }
  24. i=c+1;
  25. while(i<=n && a[l][i]==a[l][c])
  26. {
  27. ct++;
  28. i++;
  29. }
  30. return ct;
  31. }
  32. int PCol(int c, int l)
  33. {
  34. int i, ct=1;
  35. i=l-1;
  36. while(i>=1 && a[i][c]==a[l][c])
  37. {
  38. ct++;
  39. i--;
  40. }
  41. i=l+1;
  42. while (i<=n && a[i][c]==a[l][c])
  43. {
  44. ct++;
  45. i++;
  46. }
  47. return ct;
  48. }
  49. void Rezolva()
  50. {
  51. int i,j,pmax=0,p1,p2,p3,p4,p;
  52. /// schimbam elemente de pe 2 linii consecutive
  53. for(i=1; i<=n-1; i++)
  54. for(j=1; j<=n; j++)
  55. if(a[i][j]!=a[i+1][j])
  56. {
  57. swap(a[i][j],a[i+1][j]);
  58. p1=PLinie(i,j);
  59. p2=PLinie(i+1,j);
  60. p3=PCol(j,i);
  61. p4=PCol(j,i+1);
  62. p=0;
  63. /// linia i
  64. if(p1>=3)
  65. if(p3>=3) p=p+5+(p1-3)+(p3-3);
  66. else p=p+1+(p1-3);
  67. /// linia i+1
  68. if(p2>=3)
  69. if(p4>=3) p=p+5+(p2-3)+(p4-3);
  70. else p=p+1+(p2-3);
  71. /// coloana j
  72. if(p1<3)
  73. if(p3>=3) p=p+1+(p3-3);
  74. if(p2<3)
  75. if(p4>=3) p=p+1+(p4-3);
  76. pmax=max(p,pmax);
  77. swap(a[i][j],a[i+1][j]);
  78. }
  79. /// schimbam elemente de pe 2 coloane consecutive
  80. for(i=1; i<=n; i++)
  81. for(j=1; j<=n-1; j++)
  82. if(a[i][j]!=a[i][j+1])
  83. {
  84. swap(a[i][j],a[i][j+1]);
  85. p1=PLinie(i,j);
  86. p2=PLinie(i,j+1);
  87. p3=PCol(j,i);
  88. p4=PCol(j+1,i);
  89. p=0;
  90. /// linia i
  91. if(p1>=3)
  92. if(p3>=3) p=p+5+(p1-3)+(p3-3);
  93. else p=p+1+(p1-3);
  94. /// linia i+1
  95. if(p2>=3)
  96. if(p4>=3) p=p+5+(p2-3)+(p4-3);
  97. else p=p+1+(p2-3);
  98. /// coloana j
  99. if(p1<3)
  100. if(p3>=3) p=p+1+(p3-3);
  101. if(p2<3)
  102. if(p4>=3) p=p+1+(p4-3);
  103. pmax=max(p,pmax);
  104. swap(a[i][j],a[i][j+1]);
  105. }
  106. fout<<pmax;
  107. }
  108. int main()
  109. {
  110. Citire();
  111. Rezolva();
  112. return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement