Loading...
Submission
# When Author Problem Language CPU Memory
5580 2022-08-19 18:59:35 ShajibEwuCse19 Min Substring C++ 17 20 ms 3616 kb Accepted
Test Cases
# CPU Memory Points
1 3 ms 3404 kb 1 Accepted
2 3 ms 3456 kb 1 Accepted
3 3 ms 3444 kb 1 Accepted
4 4 ms 3400 kb 1 Accepted
5 3 ms 3288 kb 1 Accepted
6 3 ms 3296 kb 1 Accepted
7 4 ms 3432 kb 1 Accepted
8 3 ms 3452 kb 1 Accepted
9 4 ms 3296 kb 1 Accepted
10 20 ms 3432 kb 1 Accepted
11 18 ms 3588 kb 1 Accepted
12 20 ms 3580 kb 1 Accepted
13 18 ms 3572 kb 1 Accepted
14 19 ms 3616 kb 1 Accepted
15 20 ms 3568 kb 1 Accepted
16 17 ms 3572 kb 1 Accepted
17 18 ms 3532 kb 1 Accepted
18 17 ms 3612 kb 1 Accepted
Source Code
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. string s;
  5. int arr[200];
  6. int unique_char = 0;
  7.  
  8. bool check(int mid) {
  9.  
  10. memset(arr, 0, sizeof(arr));
  11. int i = 0;
  12. int j = 0;
  13. int cnt = 0;
  14.  
  15. while(i<mid) {
  16. if(arr[s[i]]==0) {
  17. cnt++;
  18. }
  19. arr[s[i++]]++;
  20. }
  21. if(cnt>=unique_char)
  22. return true;
  23.  
  24. while(i<s.size()) {
  25. if(arr[s[i]]==0)cnt++;
  26.  
  27. arr[s[i++]]++;
  28.  
  29. if(arr[s[j]]==1)cnt--;
  30.  
  31. arr[s[j++]]--;
  32.  
  33. if(cnt>=unique_char)return true;
  34. }
  35. if(cnt>=unique_char)return true;
  36.  
  37. return false;
  38. }
  39.  
  40. int solution() {
  41. for(int i=0; i<s.size(); i++) {
  42. if(arr[s[i]]==0) {
  43. arr[s[i]]=1;
  44. unique_char++;
  45. }
  46. }
  47.  
  48. int lo = 1;
  49. int hi = s.size();
  50.  
  51.  
  52. while(hi-lo>1) {
  53. int mid = (lo+hi)/2;
  54.  
  55. if(check(mid))hi = mid;
  56. else lo = mid;
  57.  
  58. }
  59.  
  60. while(check(hi-1))hi--;
  61.  
  62. return hi;
  63. }
  64.  
  65.  
  66. int main() {
  67.  
  68. cin>>s;
  69.  
  70. int ans = solution();
  71.  
  72. cout << ans << "\n";
  73.  
  74.  
  75.  
  76.  
  77. return 0;
  78. }
  79.