Loading...
Submission
# When Author Problem Language CPU Memory
7030 2023-02-27 12:02:49 SakiBee Min Substring C++ 17 69 ms 14244 kb Accepted
Test Cases
# CPU Memory Points
1 4 ms 3404 kb 1 Accepted
2 4 ms 3400 kb 1 Accepted
3 4 ms 3556 kb 1 Accepted
4 2 ms 3392 kb 1 Accepted
5 3 ms 3388 kb 1 Accepted
6 3 ms 3640 kb 1 Accepted
7 3 ms 3668 kb 1 Accepted
8 4 ms 3724 kb 1 Accepted
9 3 ms 3640 kb 1 Accepted
10 69 ms 14132 kb 1 Accepted
11 44 ms 14132 kb 1 Accepted
12 46 ms 14156 kb 1 Accepted
13 69 ms 14244 kb 1 Accepted
14 65 ms 14160 kb 1 Accepted
15 56 ms 14152 kb 1 Accepted
16 49 ms 14084 kb 1 Accepted
17 63 ms 14244 kb 1 Accepted
18 27 ms 14128 kb 1 Accepted
Source Code
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int inf = 1e9+7, N = 1e5 + 7;
  4.  
  5. string s;
  6. int n, unq;
  7.  
  8. int dp[N][27];
  9.  
  10. void precal() {
  11. vector<int> v(26, 0);
  12. for (int i = 0; i < n; i++) {
  13. for (int j = 0; j < 26; j++) dp[i+1][j] = dp[i][j];
  14. dp[i+1][s[i] - 'a']++;
  15. }
  16. }
  17.  
  18. bool bee(int m) {
  19. for (int i = 0; i + m <= n; i++) {
  20. int u = 0;
  21. for (int j = 0; j < 26; j++) {
  22. u += (dp[i+m][j] > dp[i][j]);
  23. }
  24. if(u == unq) return true;
  25. }
  26. return false;
  27. }
  28.  
  29. int32_t main () {
  30. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  31. cin >> s;
  32. n = s.size();
  33. precal();
  34. unq = 0;
  35. vector<int> v(26, 0);
  36. for (int i = 0; i < n; i++) {
  37. if(v[s[i] - 'a'] == 0) unq++;
  38. v[s[i] - 'a']++;
  39. }
  40.  
  41. int l = 1, r = n, mid, ans = inf;
  42. while(l <= r) {
  43. mid = (l+r) >> 1;
  44. if(bee(mid)) {
  45. ans = min(ans, mid);
  46. r = mid - 1;
  47. }
  48. else l = mid + 1;
  49.  
  50. }
  51. cout << ans << endl;
  52. }