Amazon Execute Processes (a.k.a. AWS Processor)
Problem statement
Amazon Web Services (AWS) has several processors for executing processes scheduled on its servers.
There are n processes to be executed, where the ith process takes
execution[i] amount of time to execute. Two processes are cohesive if and only if
their original execution times are equal. When a process with execution time execution[i]
is executed, it takes execution[i] time to complete and simultaneously reduces the
execution time of all its cohesive processes to ceil(execution[i] / 2).
Given the execution time of n processes, find the total amount of time the processor
takes to execute all the processes if you execute the processes in the given order, i.e. from left
to right.
Notes
- The
ceil()function returns the smallest integer that is bigger or equal to its argument. For example,ceil(1.1) = 2,ceil(2.5) = 3,ceil(5) = 5, etc. - If the execution time of some process
iis reduced and becomes equal to the execution time of any other processj, then the two processesiandjare not considered cohesive.
Complete the function totalExecutionTime in the editor.
totalExecutionTime has the following parameter:
int execution[n]: an array of integers representing the execution times
int: the total amount of time to execute all processes
Function
totalExecutionTime(execution: int[]) → intExamples
Example 1
execution = [5, 5, 3, 6, 5, 3]return = 21
processes 1, 2, 5 are cohesive processes 3, 6 are cohesive process 4 is cohesive Excuting Process 1 results in [0, 3, 3, 6, 3, 3] // total_execution = 5 Excuting Process 2 results in [0, 0, 3, 6, 2, 3] // total_execution = 8 Excuting Process 3 results in [0, 0, 0, 6, 2, 2] // total_execution = 11 Excuting Process 4 results in [0, 0, 0, 0, 2, 2] // total_execution = 17 Excuting Process 5 results in [0, 0, 0, 0, 0, 2] // total_execution = 19 Excuting Process 6 results in [0, 0, 0, 0, 0, 0] // total_execution = 21 Hence, total excution time is 21.
Constraints
Unknown for now 🐰