Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <string>
  5. #include <cstring>
  6. #include <map>
  7. #include <cmath>
  8. #include <set>
  9. #include <vector>
  10.  
  11. using namespace std;
  12.  
  13. #define forit(it, s) for(typeof(s.begin()) it = s.begin(); it != s.end(); it++)
  14. #define pb push_back
  15. #define MP make_pair
  16. #define F first
  17. #define S second
  18. #define sz size()
  19. #define LL long long
  20. #define TASK "strings"
  21.  
  22. const int inf = (1<<30);
  23. const int maxn = int(1e5) + 123;
  24. const int mod = int(1e9) + 7;
  25.  
  26. string s;
  27. int cnt[30];
  28. int ans = 1, mx;
  29. set < int > q;
  30. vector < int > pos[30];
  31.  
  32. int main () {
  33. freopen(TASK".in", "r", stdin);
  34. freopen(TASK".out", "w", stdout);
  35. cin >> s;
  36. for (int i = 0; i < s.sz; i++)
  37. cnt[s[i] - 'a'] ++;
  38. for (int i = 0; i < 26; i++)
  39. mx = max(mx, cnt[i]);
  40. for (int i = 0; i < s.sz; i++)
  41. pos[s[i] - 'a'].pb(i);
  42. for (int i = 0; i < 26; i++)
  43. if (cnt[i] == mx)
  44. q.insert(i);
  45. if (mx == 1) {
  46. cout << s.sz;
  47. return 0;
  48. }
  49. forit(it, q) {
  50. int k = (*it);
  51. char sym = char(k + 'a');
  52. int len = inf;
  53. for (int i = 1; i < pos[k].sz; i++) {
  54. len = min(len, pos[k][i] - pos[k][i - 1]);
  55. }
  56. int l;
  57. for (l = 1; l <= len; l++) {
  58. set < char > cur;
  59. for (int i = 0; i < pos[k].sz; i++)
  60. cur.insert(s[pos[k][i] + l - 1]);
  61. if (cur.sz != 1) break;
  62. }
  63. ans = max(ans, l - 1);
  64. }
  65. cout << ans;
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement