In this HackerEarth Erasing an Array problem solution you are given a binary array A of N elements. The array consists of 0's and 1's. You can perform the following operations as many times as possible:
  1. Select a subarray starting from the first index that is inversion-free and delete it.
  2. Determine the minimum number of operations to delete the entire array.
Inversion free: There are no two indices i and j in array A such that (i < j) and (Ai > Aj). 
Subarray: A subarray is an array obtained after deleting some elements from the beginning (prefix) possibly 0 and deleting some elements from the end (suffix) possibly 0.


hackerEarth Erasing an array problem solution


HackerEarth Erasing an array problem solution.

#include<bits/stdc++.h>
using namespace std;
#define FIO ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define mod 1000000007
#define endl "\n"
#define test ll t; cin>>t; while(t--)
typedef long long int ll;
int main() {
    FIO;
    test
    {
       ll n; cin>>n;
       vector<ll>a(n);
       for(auto &it:a) cin>>it;
       int ans=0,ind=0;
       while(ind<n){
           ans++;
           while(ind<n && a[ind]==0){
               ind++;
           }
           while(ind<n && a[ind]==1){
               ind++;
           }
       }
       cout<<ans<<endl;
    }
    return 0;
}

second solution

t = int(input())
while t > 0:
    t -= 1
    n = int(input())
    a = list(map(int, input().split()))
    ans = 1
    for i in range(n - 1):
        ans += a[i] - a[i + 1] == 1
    print(ans)