# Nomor Kandang Unofficial Editorial This editorial is made by [Joshua James](https://codeforces.com/profile/joshjms). --- The question wants to find a certain number such that this is the greatest number you can buy with $m$. Let the first digit be $F$ and the temporary second until end digit be $S$. Let's form a number $FSSSS...$ such that the digits are maximized. Here we can easily notice that $S$ is simply the cheapest digit while $F$ is the highest possible digit that supports the largest number of digits. To begin, we can iterate over $F$. Let's fix $S$ as the cheapest digit. Notice that $S$ can be any digit $(0 \leq S \leq N)$. Define $D$ as the number of digits in $FSSSS...$. Also define $C_i$ as the cost of the digit $i$. When iterating over $F$, we can simply skip $0$, as there shouldn't be any leading zeros. Let the number of digits when $F = i$ as $D_i$. $D_i = (m - C_i) / C_S + 1$. Until that part we want to maximize $D$. So far, this is our code. ```cpp= for(int i = 0; i <= n; i++){ cin >> c[i]; mn = comp(mn, {c[i], i}); } cin >> m; if(m >= c[0]) d = 0, F = 0, pref = "0"; for(int i = 1; i <= n; i++){ if(d <= 0 && m >= c[i]) d = 0, F = i, pref = char(i + '0'); int tmp = (m - c[i]) / mn.fi; if(tmp > 0 && tmp >= d){ d = tmp; F = i; pref = char(i + '0'); } } ``` Note that the function `comp` is as follows. ```cpp= pair <int, int> comp (pair<int,int> a, pair<int,int> b){ if(a.fi < b.fi) return a; if(b.fi < a.fi) return b; if(a.se > b.se) return a; if(b.se > a.se) return b; } ```