fork download
  1. #include <iostream>
  2. #include<string>
  3. using namespace std;
  4. struct stroka
  5. {
  6. string s;
  7. int m;
  8. string words[10000];
  9. };
  10. int main()
  11. {
  12.  
  13. int k=0;
  14. stroka *a=new stroka[10000];
  15. string s,s1,s2,s3,S1,S2;
  16. while (getline(cin, s))
  17. {
  18. k++;
  19. for (int i = 0; i < s.length(); i++) {
  20. if ((s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z'))
  21. s1 += s[i];
  22. else if (s[i] >= 'A' && s[i] <= 'Z')
  23. {
  24. s1 += s[i] + 32;
  25. }
  26. else if (s[i] == ' ')
  27. s1 += s[i];
  28. }
  29. int i=0;
  30. while (i<s1.length())
  31. {
  32. while ((s1[i]!=32)&&(i<s1.length()))
  33. {
  34. s3=s3+s1[i];
  35. i++;
  36. }
  37. if (s3.length() > 3)
  38. {
  39. s2 = s2 + s3;
  40. if (i<s1.length())
  41. s2=s2+ " ";
  42. }
  43. while (s1[i]==' ')
  44. i++;
  45. s3="";
  46. }
  47. a[k].s=s2;
  48. s1="";
  49. s2="";
  50. }
  51. for (int i=1;i<=k;i++)
  52. {
  53. int m=0;
  54. int j=0;
  55. while (j<a[i].s.length())
  56. {
  57. while ((a[i].s[j]!=32)&&(j<a[i].s.length()))
  58. {
  59. a[i].words[m]=a[i].words[m]+a[i].s[j];
  60. j++;
  61. }
  62. j++;
  63. m++;
  64. }
  65. a[i].m=m;
  66. }
  67. int c;
  68. for (int i=1;i<k;i++)
  69. for (int j=i+1;j<=k;j++)
  70. {
  71. double p=0;
  72. for (int r=0;r<a[i].m;r++)
  73. for (int l=0;l<a[j].m;l++)
  74. {
  75. int t=1;
  76. double c=0;
  77. while ((t<a[i].words[r].length())&&(t<a[j].words[l].length()))
  78. {
  79. if ((a[i].words[r][t]==a[j].words[l][t])&&(a[i].words[r][t-1]==a[j].words[l][t-1]))
  80. c++;
  81. t++;
  82. }
  83. double KF=c/(a[i].words[r].length()+a[j].words[l].length()-c);
  84. if (KF>0.45)
  85. p++;
  86. }
  87. double kf =p/(a[i].m+a[j].m-p);
  88. if (kf>0.25)
  89. cout<<i<<" "<<j<<endl;
  90. }
  91. }
Success #stdin #stdout 0.71s 3128912KB
stdin
Segodnya 4etverg
Zavtra sreda
c*h*e*t*v*e*r*g s*e*g*o*d*n*y*a
stdout
1 3