fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. string s ;
  5. cin>> s;
  6. int n = s.size(), longest[n], last['z'+1], unique[n];
  7. longest[0] = 1;
  8. for (int i = 0; i < n; i++) {
  9. unique[i] = 1;
  10. if (i>0 && s[i] == s[i-1]) {
  11. longest[i] = longest[i-1] + 1;
  12. } else {
  13. longest[i] = 1;
  14. }
  15. }
  16.  
  17. memset(last,-1,sizeof last);
  18.  
  19. for (int i = 0; i < n; i++) {
  20. if ('a' <= s[i]) {
  21. if (last['a']!=-1 && longest[last['a']] + 1 >= longest[i]) {
  22. longest[i] = longest[last['a']] + 1;
  23. if (s[i] != 'a') unique[i] = max(unique[i], unique[last['a']] + 1);
  24. else unique[i] = max(unique[i], unique[last['a']]);
  25. }
  26. }
  27. if ('e' <= s[i]) {
  28. if (last['e']!=-1 && longest[last['e']] + 1 >= longest[i]) {
  29. longest[i] = longest[last['e']] + 1;
  30. if (s[i] != 'e') unique[i] = max(unique[i], unique[last['e']] + 1);
  31. else unique[i] = max(unique[i], unique[last['e']]);
  32. }
  33. }
  34. if ('i' <= s[i]) {
  35. if (last['i']!=-1 && longest[last['i']] + 1 >= longest[i]) {
  36. longest[i] = longest[last['i']] + 1;
  37. if (s[i] != 'i') unique[i] = max(unique[i], unique[last['i']] + 1);
  38. else unique[i] = max(unique[i], unique[last['i']]);
  39. }
  40. }
  41. if ('o' <= s[i]) {
  42. if (last['o']!=-1 && longest[last['o']] + 1 >= longest[i]) {
  43. longest[i] = longest[last['o']] + 1;
  44. if (s[i] != 'o') unique[i] = max(unique[i], unique[last['o']] + 1);
  45. else unique[i] = max(unique[i], unique[last['o']]);
  46. }
  47. }
  48. if ('u' <= s[i]) {
  49. if (last['u']!=-1 && longest[last['u']] + 1 >= longest[i]) {
  50. longest[i] = longest[last['u']] + 1;
  51. if (s[i] != 'u') unique[i] = max(unique[i], unique[last['u']] + 1);
  52. else unique[i] = max(unique[i], unique[last['u']]);
  53. }
  54. }
  55. last[s[i]] = i;
  56. }
  57.  
  58. for(int i=0;i<n;i++)
  59. cout<<longest[i]<<" ";
  60. cout<<"\n";
  61. for(int i=0;i<n;i++)
  62. cout<<unique[i]<<" ";
  63. cout<<"\n";
  64.  
  65. int result = 0;
  66. for (int i = 0; i < n; i++) {
  67. if (unique[i] == 5 && result < longest[i]) {
  68. result = longest[i];
  69. }
  70. }
  71. cout<< result ;
  72.  
  73. return 0;
  74. }
  75.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout

0