Advertisement
a53

kps

a53
Feb 21st, 2020
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("kps.in");
  4. ofstream fout("kps.out");
  5. int C;
  6. string s;
  7. vector<vector<string>> v(10002);
  8.  
  9. int longestPrefixSuffix(string s)
  10. {
  11. int n = s.length();
  12. int lps[n];
  13. lps[0] = 0;
  14. int len = 0;
  15. int i = 1;
  16. while (i < n)
  17. {
  18. if (s[i] == s[len])
  19. {
  20. len++;
  21. lps[i] = len;
  22. i++;
  23. }
  24. else
  25. {
  26. if (len != 0)
  27. len = lps[len-1];
  28. else
  29. {
  30. lps[i] = 0;
  31. i++;
  32. }
  33. }
  34. }
  35. int res = lps[n-1];
  36. return res;
  37. }
  38.  
  39. int main()
  40. {
  41. fin>>C;
  42. if(C==1)
  43. {
  44. fin>>s;
  45. fout<<longestPrefixSuffix(s);
  46. }
  47. else
  48. {
  49. int maxs=0;
  50. while(fin>>s)
  51. {
  52. int k=longestPrefixSuffix(s);
  53. maxs=max(k, maxs);
  54. v[k].push_back(s);
  55. }
  56. int k=maxs;
  57. for(int i=0;i<=k;++i)
  58. sort(v[i].begin(),v[i].end());
  59. for(int i=0;i<=k;++i)
  60. {
  61. fout<<v[i].size()<<' ';
  62. for(int j=0;j<(int)v[i].size(); ++j)
  63. fout<<v[i][j]<<' ';
  64. fout<<'\n';
  65. }
  66. }
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement