Codementor Events

A CodeFair Challenge

Published Feb 01, 2019

Solution to the Ashesi Code Fair 2015 Competition (Advance Problem) in Php

I took 1st runner up and I was suprised when the Judges said my code ran for 28secs šŸ˜¦ Guys, help me confirm that šŸ˜‰

TL;DR

View Code on github

Here is the Problem:

A non-empty zero-indexed array A consisting of N integers is given.

A pair of integers (P, Q), such that 0 ā‰¤ P < Q < N, is called a slice of array A (notice that the slice contains at least two elements).

The average of a slice (P, Q) is the sum of A[P] + A[P+ 1] + ... + A[Q]

divided by the length of the slice. To be precise, the average equals

(A[P] + A[P + 1] + ... + A[Q]) / (Q āˆ’ P + 1).

For example, array A such that:

A[0] = 4

A[1] = 2

A[2] = 2

A[3] = 5

A[4] = 1

A[5] = 5

A[6] = 8
contains the following example slices:

ā— slice (1, 2), whose average is (2 + 2) / 2 = 2;

ā— slice (3, 4), whose average is (5 + 1) / 2 = 3;

ā— slice (1, 4), whose average is (2 + 2 + 5 + 1) / 4 = 2.5.
The goal is to find the starting position of a slice whose average is minimal.

Write a function:

int solution(int A[], int N);

that, given a non-empty zero-indexed array A consisting of N integers, returns the starting position of the slice with the minimal average. If there is more than one slice with a minimal average, you should return the smallest starting position of such a slice.

For example, given array A such that:

A[0] = 4

A[1] = 2

A[2] = 2

A[3] = 5

A[4] = 1

A[5] = 5

A[6] = 8
the function should return 1, as explained above.

Assume that:

ā— N is an integer within the range [2..100,000];

ā— each element of array A is an integer within the range [āˆ’10,000..10,000].
Complexity:

ā— expected worst-case time complexity is O(N);

ā— expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.

Discover and read more posts from Precious Akin
get started
post commentsBe the first to share your opinion
Show more replies