Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int Solution::solve(vector<int> &A, int B)
- {
- int cnt=0, i=0, j=0, n=A.size();
- map<int,int> hash;
- hash[A[0]]++;
- while(j<A.size()){
- if(hash.size()<=B)cnt+=(j-i+1);
- if(hash.size()<=B){
- j++;
- if(j<n)hash[A[j]]++;
- }
- else{
- hash[A[i]]--;
- if(hash[A[i]]==0)hash.erase(A[i]);
- i++;
- }
- }
- hash.clear();
- i=0,j=0;
- int cnt2=0;
- hash[A[0]]++;
- while(j<A.size())
- {
- if(hash.size()<=B-1)cnt2+=(j-i+1);
- if(hash.size()<=B-1){
- j++;
- if(j<n)hash[A[j]]++;
- }
- else{
- if(i==j){
- j++;
- if(j<n)hash[A[j]]++;
- continue;
- }
- hash[A[i]]--;
- if(hash[A[i]]==0)hash.erase(A[i]);
- i++;
- }
- }
- B--;
- return cnt-cnt2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement