Problem:
Score : 100 points

Problem Statement

There is a hotel with the following accommodation fee:

X yen (the currency of Japan) per night, for the first K nights

Y yen per night, for the (K+1)-th and subsequent nights

Tak is staying at this hotel for N consecutive nights.
Find his total accommodation fee.

Constraints

1 \leq N, K \leq 10000

1 \leq Y < X \leq 10000

N,\,K,\,X,\,Y are integers.

Input

The input is given from Standard Input in the following format:

N
K
X
Y

Output

Print Tak's total accommodation fee.

Sample Input 1

5
3
10000
9000

Sample Output 1

48000

The accommodation fee is as follows:

10000 yen for the 1-st night

10000 yen for the 2-nd night

10000 yen for the 3-rd night

9000 yen for the 4-th night

9000 yen for the 5-th night

Thus, the total is 48000 yen.

Sample Input 2

2
3
10000
9000

Sample Output 2

20000

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;

class D {
    static long F(long b, long n) {
        var answer = 0L;
        while (n != 0L) {
            answer += n % b;
            n /= b;
        }
        return answer;
    }

    static long Solve(long n, long s) {
        if (n == s) return n + 1L;
        var sqrtN = (long)Math.Round(Math.Sqrt(n));
        var sqrtNLower = sqrtN;
        if (n < sqrtNLower * sqrtNLower) --sqrtNLower;
        var sqrtNUpper = sqrtN;
        if (sqrtNUpper * sqrtNUpper < n) ++sqrtNUpper;
        for (long b = 2L; b < sqrtNUpper; ++b)
            if (F(b, n) == s) return b;
        for (long s1 = sqrtNLower; s1 != 0L; --s1) {
            var s2 = s - s1;
            var b = (n - s2) / s1;
            if (b >= 2L && F(b, n) == s) return b;
        }
        return -1L;
    }

    public static void Main() {
        var n = long.Parse(Console.ReadLine());
        var s = long.Parse(Console.ReadLine());
        Console.WriteLine(Solve(n, s));
    }
}