Why I am getting wrong answer in subtask 2 of NOTALLFL LunchTime problem 2

#include<bits/stdc++.h>
using namespace std;
#define int long long int
#define vi vector
#define vii vector<vector>
#define pb push_back
#define mp make_pair
#define ii pair<int,int>
#define loop(n) for(int i=0; i<(int)n; i++)
#define ld long double
#define um unordered_map
#define test int t; cin>>t; while(t–)
#define floatdigit(n) cout<<fixed; cout<<setprecision(n);
#define all(array) array.begin(),array.end()
#define MOD 1000000007
#define MAX 100005
#define endl “\n”
//USE transform(s.begin(),s.end(),s.begin(),::tolower);
int32_t main(){
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

test{
    int n , k;
    cin>>n>>k;
    vi a(n);
    loop(n) cin>>a[i];

    set<int> s;
    int left  , right , max_length;
    left = right = max_length = 0;
    loop(n){
        s.insert(a[i]);

        if(s.size() >= k){
            s.erase(a[left]);
            int temp = a[left];
            while(a[left] == temp and left < n){
                left++;
            }
        }
        max_length = max(max_length , right-left+1);
        right++;
    }

    cout<<max_length<<endl;
}

return 0;

}

Test Case:

1
15 4
1 2 3 3 3 2 2 1 4 4 4 4 3 2 4

Your Output:

14

Expected Output:

8

1 Like

Thanks for pointing out my mistake.

1 Like

You are welcome.

I have prepare an solution but it is still partial corrected. please review my code and find out my mistack.

# cook your dish here

def main():
    for T in range(int(input())):
        N,K = list(map(int,input().split()))
        segment = dict()
        max_segment_length = 0 
        for i in input().split():
            if int(i)<=K :
                if segment.get(i) is None:
                    if len(segment)+1 < K:
                        segment[i]  =  1
                    else:
                        # print(segment)
                        t = sum(segment.values())
                        max_segment_length= max(max_segment_length , t)
                        segment = dict()
                        segment[i] = 1
                else:
                    segment[i] += 1
        # print(segment)
        t = sum(segment.values())
        max_segment_length= max(max_segment_length , t)
        print(max_segment_length)        

                    
                    
if __name__ == '__main__':
    main()