Phone Call

Description


Some phone usage rate may be described as follows:

  • first minute of a call costs min1 cents,
  • each minute from the 2nd up to 10th (inclusive) costs min2_10 cents
  • each minute after 10th costs min11 cents.

You have s cents on your account before the call. What is the duration of the longest call (in minutes rounded down to the nearest integer) you can have?

Example

For min1 = 3, min2_10 = 1, min11 = 2, and s = 20, the output should be phoneCall(min1, min2_10, min11, s) = 14.

Here’s why:

  • the first minute costs 3 cents, which leaves you with 20 - 3 = 17 cents;
  • the total cost of minutes 2 through 10 is 1 * 9 = 9, so you can talk 9 more minutes and still have 17 - 9 = 8 cents;
  • each next minute costs 2 cents, which means that you can talk 8 / 2 = 4 more minutes.

Thus, the longest call you can make is 1 + 9 + 4 = 14 minutes long.

Input/Output

  • [execution time limit] 4 seconds (js)

  • [input] integer min1

    Guaranteed constraints:
    1 \leq min1 \leq 10.

  • [input] integer min2_10

    Guaranteed constraints:
    1 \leq min2_10 \leq 10.

  • [input] integer min11

    Guaranteed constraints:
    1 \leq min11 \leq 10.

  • [input] integer s

    Guaranteed constraints:
    2 \leq s\leqe 500.

  • [output] integer

[JavaScript (ES6)] Syntax Tips

1
2
3
4
5
6
// Prints help message to the console
// Returns a string
function helloWorld(name) {
    console.log("This prints to the console when you Run Tests");
    return "Hello, " + name;
}

Solution


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function phoneCall(min1, min2_10, min11, s) {
	var t = 0;
	if (s >= min1) {
		s -= min1;
		t += 1;
	}
	if (s >= min2_10) {
		var m = Math.min(9, s / min2_10);
		t += m;
		s -= min2_10 * m;
	}
	if (s >= min11) {
		t += s / min11;
	}
	return Math.floor(t);
}