Loading...
Submission
# When Author Problem Language CPU Memory
6976 2023-02-26 19:34:37 heisenberg_120 Min Substring C++ 17 3 ms 3480 kb Wrong Answer - 6
Test Cases
# CPU Memory Points
1 3 ms 3400 kb 1 Accepted
2 3 ms 3476 kb 1 Accepted
3 3 ms 3480 kb 1 Accepted
4 3 ms 3476 kb 1 Accepted
5 3 ms 3476 kb 1 Accepted
6 3 ms 3408 kb 0 Wrong Answer
7 0 ms 0 kb 0 Skipped
8 0 ms 0 kb 0 Skipped
9 0 ms 0 kb 0 Skipped
10 0 ms 0 kb 0 Skipped
11 0 ms 0 kb 0 Skipped
12 0 ms 0 kb 0 Skipped
13 0 ms 0 kb 0 Skipped
14 0 ms 0 kb 0 Skipped
15 0 ms 0 kb 0 Skipped
16 0 ms 0 kb 0 Skipped
17 0 ms 0 kb 0 Skipped
18 0 ms 0 kb 0 Skipped
Source Code
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long int
  4.  
  5. signed main(){
  6. ios_base::sync_with_stdio(false);
  7. cin.tie(nullptr);
  8. string s;
  9. cin >> s;
  10. int n = (int) s.size(), l = 1, r = n, ans = n;
  11. vector<int> vis(26, 0);
  12. int need = 0;
  13. for(auto x : s){
  14. if(!vis[x - 'a']){
  15. need += 1;
  16. }
  17. vis[x - 'a'] += 1;
  18. }
  19. auto possible = [&](int x){
  20. vis.assign(26, 0); int cnt = 0;
  21. for(int i = 0; i < x; i++){
  22. if(!vis[s[i] - 'a']){
  23. cnt += 1;
  24. }
  25. vis[s[i] - 'a'] += 1;
  26. }
  27. if(cnt == need)return true;
  28. int pt = x;
  29. while (pt < n){
  30. if(!vis[s[pt] - 'a']){
  31. cnt += 1;
  32. }
  33. if(vis[s[pt - x] - 'a'] - 1 == 0){
  34. cnt -= 1;
  35. }
  36. vis[s[pt] - 'a'] += 1;
  37. vis[s[pt - x] - 'a'] -= 1;
  38. pt += 1;
  39. if(cnt == need)return true;
  40. }
  41. return false;
  42. };
  43. while (l <= r){
  44. int m = (l + r) >> 1;
  45. if(possible(m)){
  46. ans = m;
  47. r = m - 1;
  48. }else l = m + 1;
  49. }
  50. cout << ans << '\n';
  51. return 0;
  52. }