Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4. ifstream fin("caroiaj.in");
  5. ofstream fout("caroiaj.out");
  6.  
  7. char a[501][501], s[250001];
  8. int n, i, j, lg, lgmx, poz, nc, k, x, y;
  9.  
  10. int main()
  11. {
  12.  
  13. fin>>n; ///fin.get();
  14. for(int i=1;i<=n;i++)
  15. {
  16. for(int j=1;j<=n;j++)
  17. fin>>a[i][j];
  18. ///fin.get();
  19. }
  20.  
  21. nc=n/2+n%2;
  22. k=0;
  23. for(int t=1;t<=nc;t++)
  24. {
  25. ///1
  26. x=t;
  27. for(int i=t; i<= n-t+1; i++)
  28. s[k++]=a[x][i];
  29.  
  30. ///2
  31. y=n-t+1;
  32. for(int i=t+1;i<=n-t+1;i++)
  33. s[k++]=a[i][y];
  34.  
  35. ///3
  36. x=n-t+1;
  37. for(int i=n-t; i>=t; i--)
  38. s[k++]=a[x][i];
  39.  
  40. ///4
  41. y=t;
  42. for(int i=n-t;i>=t+1;i--)
  43. s[k++]=a[i][y];
  44. }
  45.  
  46. ///fout<<s<<endl;
  47.  
  48. for(int i=0;i<k;i++)
  49. {
  50. ///cazul I, cand secventa simetrica are 1 element in mijloc
  51. int st, dr;
  52. st=i-1, dr=i+1;lg=1;
  53. while(st>=0 && dr<k && s[st]==s[dr])
  54. {
  55. st--, dr++ ;
  56. lg+=2;
  57. }
  58. if(lg>=lgmx)
  59. {
  60. lgmx=lg;
  61. poz=st+1;
  62. }
  63.  
  64. ///cazul II, cand secventa simetrica are 2 elemente in mijloc
  65. if(s[i]==s[i+1] && i+1<k)
  66. {
  67. st=i-1;dr=i+2;lg=2;
  68. while(st>=0 && dr<k && s[st]==s[dr])
  69. {
  70. st--, dr++ ;
  71. lg+=2;
  72. }
  73. if(lg>=lgmx)
  74. {
  75. lgmx=lg;
  76. poz=st+1;
  77. }
  78. }
  79. }
  80.  
  81. //fout<<lgmx<<endl;
  82.  
  83. for(int i=poz;i<poz+lgmx;i++)
  84. fout<<s[i];
  85. fout<<'\n';
  86.  
  87. fout.close();
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement