vendredi 18 septembre 2020

Tell me the Input in which this code will give incorrect Output

There's a problem, which I've to solve in c++. I've written the whole code and it's working in the given test cases but when I'm submitting it, It's saying wrong answer. I can't understand that why is it showing wrong answer. I request you to tell me an input for the given code, which will give incorrect output so I can modify my code further.

Shrink The Array

You are given an array of positive integers A[] of length L. If A[i] and A[i+1] both are equal replace them by one element with value A[i]+1. Find out the minimum possible length of the array after performing such operation any number of times.

Note: After each such operation, the length of the array will decrease by one and elements are renumerated accordingly.

Input format:

  • The first line contains a single integer L, denoting the initial length of the array A.
  • The second line contains L space integers A[i] − elements of array A[].

Output format:

  • Print an integer - the minimum possible length you can get after performing the operation described above any number of times.

Example:

Input

7
3 3 4 4 4 3 3

Output

2

Sample test case explanation

3 3 4 4 4 3 3 -> 4 4 4 4 3 3 -> 4 4 4 4 4 -> 5 4 4 4 -> 5 5 4 -> 6 4.

Thus the length of the array is 2.

My code:

#include <bits/stdc++.h>
using namespace std;

int main()
{
  bool end = false;
  int l;
  cin >> l;

  int arr[l];
  for(int i = 0; i < l; i++){

    cin >> arr[i];
  }
  int len = l, i = 0;

  while(i < len - 1){
    if(arr[i] == arr[i + 1]){
        arr[i] = arr[i] + 1;
        if((i + 1) <= (len - 1)){
            for(int j = i + 1; j < len - 1; j++){
                arr[j] = arr[j + 1];
            }
        }
        len--;
        i = 0;
    }
    else{
        i++;
    }
  }
  cout << len;
  return 0;
}

THANK YOU

Aucun commentaire:

Enregistrer un commentaire