Your browser (Unknown 0) is no longer supported. Some parts of the website may not work correctly. Please update your browser.

UPCOMING CHALLENGES:

CURRENT CHALLENGES:

Neon 2014

PAST CHALLENGES

Fluorum 2014

Oxygenium 2014

Nitrogenium 2013

Carbo 2013

Boron 2013

Beryllium 2013

Lithium 2013

Helium 2013

Hydrogenium 2013

Omega 2013

Psi 2012

Chi 2012

Phi 2012

Upsilon 2012

Tau 2012

Sigma 2012

Rho 2012

Pi 2012

Omicron 2012

Xi 2012

Nu 2011

Mu 2011

Lambda 2011

Kappa 2011

Iota 2011

Theta 2011

Eta 2011

Zeta 2011

Epsilon 2011

Delta 2011

Gamma 2011

December 2010

PrefixSet edition (2010-10)

Count the number of islands on consecutive days.

Spoken language:

The city of Codicity is located at the seaside. The city area comprises N plots located along a boulevard on one side of the city. Each plot is flat, but different plots have different heights above the sea level. The relative heights of the consecutive plots are given in the form of a non-empty array A of N integers.

The sea level changes constantly and many plots are sometimes under water. Water levels on consecutive days are given in the form of a non-empty array B of M integers.

A *slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Assume that the following declarations are given:

struct Results { int * C; int M; // Length of the array };

Write a function:

struct Results solution(int A[], int N, int B[], int M);

that, given a non-empty array A of N integers and a non-empty array B of M integers, returns a sequence consisting of M integers representing the number of islands on consecutive days.

Result array should be returned as a structure `Results`.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

The city of Codicity is located at the seaside. The city area comprises N plots located along a boulevard on one side of the city. Each plot is flat, but different plots have different heights above the sea level. The relative heights of the consecutive plots are given in the form of a non-empty array A of N integers.

The sea level changes constantly and many plots are sometimes under water. Water levels on consecutive days are given in the form of a non-empty array B of M integers.

A *slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

vector<int> solution(vector<int> &A, vector<int> &B);

that, given a non-empty array A of N integers and a non-empty array B of M integers, returns a sequence consisting of M integers representing the number of islands on consecutive days.

Result array should be returned as a vector of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

The city of Codicity is located at the seaside. The city area comprises N plots located along a boulevard on one side of the city. Each plot is flat, but different plots have different heights above the sea level. The relative heights of the consecutive plots are given in the form of a non-empty array A of N integers.

The sea level changes constantly and many plots are sometimes under water. Water levels on consecutive days are given in the form of a non-empty array B of M integers.

A *slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

vector<int> solution(vector<int> &A, vector<int> &B);

that, given a non-empty array A of N integers and a non-empty array B of M integers, returns a sequence consisting of M integers representing the number of islands on consecutive days.

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

class Solution { public int[] solution(int[] A, int[] B); }

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

List<int> solution(List<int> A, List<int> B);

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

func Solution(A []int, B []int) []int

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

class Solution { public int[] solution(int[] A, int[] B); }

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

class Solution { public int[] solution(int[] A, int[] B); }

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

function solution(A, B);

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

fun solution(A: IntArray, B: IntArray): IntArray

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

function solution(A, B)

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

Note: All arrays in this task are zero-indexed, unlike the common Lua convention. You can use `#A` to get the length of the array A.

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

NSMutableArray * solution(NSMutableArray *A, NSMutableArray *B);

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Assume that the following declarations are given:

Results = record C : array of longint; M : longint; {Length of the array} end;

Write a function:

function solution(A: array of longint; N: longint; B: array of longint; M: longint): Results;

Result array should be returned as a record `Results`.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

function solution($A, $B);

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

sub solution { my ($A, $B) = @_; my @A = @$A; my @B = @$B; ... }

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

def solution(A, B)

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

def solution(a, b)

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

object Solution { def solution(a: Array[Int], b: Array[Int]): Array[Int] }

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

public func solution(_ A : inout [Int], _ B : inout [Int]) -> [Int]

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

function solution(A: number[], B: number[]): number[];

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].

*slice* of array A is any pair of integers (P, Q) such that 0 ≤ P ≤ Q < N. An *island* is a slice of consecutive plots that rise above the water’s surface. The plots on either side of each island are under water. More precisely, if the level of the water is K, then an island is a slice (P, Q) in which the level of each plot A[P], A[P + 1], ..., A[Q] is greater than K. Both of the adjacent plots should also be under water; that is:

- P = 0 or A[P − 1] ≤ K
- Q = N − 1 or A[Q + 1] ≤ K

The goal is to calculate the number of islands on consecutive days.

For example, given the following arrays A and B:

We have the following number of islands on consecutive days:

- on the first day there is only 1 island: (0, 4),
- on the second day there are 2 islands: (0, 0) and (2, 4),
- on the third day there are 2 islands: (2, 2) and (4, 4),
- on the fourth day there aren't any islands,
- on the fifth day there are 2 islands: (0, 0) and (2, 4).

Write a function:

Private Function solution(A As Integer(), B As Integer()) As Integer()

Result array should be returned as an array of integers.

For example, given:

the function should return the array [1, 2, 2, 0, 2], as explained above.

Write an ** efficient** algorithm for the following assumptions:

- N and M are integers within the range [1..30,000];
- each element of arrays A and B is an integer within the range [0..100,000].