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
#include <bits/stdc++.h> using namespace std; #define int long long int signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> s; int n = (int) s.size(), l = 1, r = n, ans = n; vector<int> vis(26, 0); int need = 0; for(auto x : s){ if(!vis[x - 'a']){ need += 1; } vis[x - 'a'] += 1; } auto possible = [&](int x){ vis.assign(26, 0); int cnt = 0; for(int i = 0; i < x; i++){ if(!vis[s[i] - 'a']){ cnt += 1; } vis[s[i] - 'a'] += 1; } if(cnt == need)return true; int pt = x; while (pt < n){ if(!vis[s[pt] - 'a']){ cnt += 1; } if(vis[s[pt - x] - 'a'] - 1 == 0){ cnt -= 1; } vis[s[pt] - 'a'] += 1; vis[s[pt - x] - 'a'] -= 1; pt += 1; if(cnt == need)return true; } return false; }; while (l <= r){ int m = (l + r) >> 1; if(possible(m)){ ans = m; r = m - 1; }else l = m + 1; } cout << ans << '\n'; return 0; }