MasterRayuga's blog

By MasterRayuga, history, 4 years ago, In English

Can someone please tell me why my code is showing this type of undefined behavior

here is the first submission which is getting WA on test 2 (when submitted on c++17) & WA on test 5 (when submitted on c++20)

here is the accepted solution The only thing that I have changed here is

        for(int i=0;i<n;i++){
            cin>>arr[i];
            mp1[arr[i]]++;
            if(mp1[arr[i]]>=k){
                s1.insert(arr[i]);
            }
        }

to

        for(int i=0;i<n;i++){
            cin>>arr[i];
            mp1[arr[i]]++;
        }
        for(int i=0;i<n;i++){
            if(mp1[arr[i]]>=k){
                s1.insert(arr[i]);
            }            
        }
  • Vote: I like it
  • 0
  • Vote: I do not like it

»
4 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

comparing your both submission using codeforces' compare feature shows that you changed the upper limit of the for loop in maxiConsecutiveSubarray method

»
4 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

The reason for the UB is 'out of bounds' on the line 40. Change j < N to j + 1 < N