Advertisement
a53

Codul

a53
Feb 25th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. FILE* in=fopen("codul.in","r");
  5. FILE* out=fopen("codul.out","w");
  6.  
  7. const int Q=201;
  8.  
  9. char a[Q],b[Q];
  10.  
  11. int sa,sb;
  12.  
  13. struct tipe{
  14. unsigned char size;
  15. unsigned char x,y;
  16.  
  17. void operator = (const tipe &aux)
  18. {
  19. size=aux.size;
  20. x=aux.x;
  21. y=aux.y;
  22. }
  23.  
  24. } v[Q][Q];
  25.  
  26.  
  27. //int q1[Q],q2[Q];
  28.  
  29. void modifica(int x1, int y1, int x2,int y2)
  30. {
  31. int x1v=x1,y1v=y1,x2v=x2,y2v=y2,aux;
  32.  
  33. if(v[x2][y2].size>v[x1][y1].size)
  34. {
  35. v[x1][y1]=v[x2][y2];
  36. return;
  37. }
  38. // q1[0]=0;
  39. // q2[0]=0;
  40.  
  41. bool ult=0;
  42. if(v[x2][y2].size == v[x1][y1].size)
  43. {
  44. while( x2>0 && x1>0 && y1>0 && y2>0 )
  45. {
  46.  
  47. if(a[ v[x2][y2].x +1 ]> a[ v[x1][y1].x +1 ])
  48. {
  49. //v[x1v][y1v]=v[x2v][y2v];
  50. //return;
  51. ult=1;
  52. }
  53. if(a[ v[x2][y2].x +1 ] < a[ v[x1][y1].x +1 ])
  54. ult=0;
  55.  
  56. // q1[++q1[0]]=a[ v[x1][y1].x +1 ];
  57. // q2[++q2[0]]=a[ v[x2][y2].x +1 ];
  58.  
  59.  
  60. aux=v[x2][y2].x;
  61. y2=v[x2][y2].y;
  62. x2=aux;
  63.  
  64. aux=v[x1][y1].x;
  65. y1=v[x1][y1].y;
  66. x1=aux;
  67. }
  68. if(ult==1)
  69. v[x1v][y1v]=v[x2v][y2v];
  70. /*
  71. for(int i=q1[0]; i>0; i--)
  72. {
  73. if(q2[i]>q1[i])
  74. {
  75. v[x1v][y1v]=v[x2v][y2v];
  76. return;
  77. }
  78. }
  79. */
  80. // if(a[ v[x2][y2].x +1 ] > a[ v[x1][y1].x +1 ])
  81.  
  82. }
  83. }
  84.  
  85.  
  86. unsigned char rez[Q];
  87.  
  88. int main()
  89. {
  90. fscanf(in,"%s %s",a+1,b+1);
  91.  
  92. sa=strlen(a+1);
  93. sb=strlen(b+1);
  94.  
  95. for(int i=1; i<=sa; i++)
  96. {
  97. for(int j=1; j<=sb; j++)
  98. {
  99. if(a[i]==b[j])
  100. {
  101. v[i][j].size=v[i-1][j-1].size+1;
  102. v[i][j].x=i-1;
  103. v[i][j].y=j-1;
  104. }
  105.  
  106. modifica(i,j,i-1,j);
  107. modifica(i,j,i,j-1);
  108. }
  109. }
  110.  
  111. int x=sa,y=sb,aux;
  112.  
  113. while(v[x][y].size>0)
  114. {
  115. rez[++rez[0]]=a[ v[x][y].x +1 ];
  116.  
  117. aux=v[x][y].x;
  118. y=v[x][y].y;
  119. x=aux;
  120. }
  121. for(int i=rez[0]; i>0; i--)
  122. {
  123. fprintf(out,"%c",rez[i]);
  124. }
  125.  
  126. return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement