Desafio relacionado a marketing multinível.
Um colega quer ser recompensado. Por isso, atraiu N
investidores ( N>=1
), cada i-ésimo investidor x[i]
. Quando uma soma total excede o limite, x[0]+x[1]+...+x[N-1] >= T
um par pode ser recompensado. Mas somente se as seguintes condições forem atendidas:
- A quantidade mínima de investidores deve ser maior que
M
, (M<=N
) - Para pelo menos um número inteiro
k
, ondek>=M
ek<=N
, qualquerk
investidor deve investir pelo menosT/k
um;
Dado que N, x[], T, M
você deve determinar se a recompensa do par é gerada ou não (resultado booleano, "sim" ou "não"). O menor código vence.
Exemplos:
N=5; M=3; T=10000
, para gerar a recompensa do parceiro, um dos seguintes itens deve ser satisfeito:
- quaisquer 3 investiram pelo menos 3334 cada
- quaisquer 4 investiram pelo menos 2500 cada
- todos os 5 investiram pelo menos 2000 cada
N=6; M=2; T=5000
:
- quaisquer 2 investiram pelo menos 2500 cada
- quaisquer 3 investiram pelo menos 1667 cada
- quaisquer 4 investiram pelo menos 1250 cada
- quaisquer 5 investiram pelo menos 1000 cada
- todos os 6 investiram pelo menos 834 cada
generalizado: para qualquer k
, onde k>=M
e k<=N
:
- qualquer
k
dosN
investidores investiu pelo menosT/k
cada
Casos de teste:
formato:
N, x[], T, M -> correct answer
6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0
6, [0, 60, 0, 60, 60, 0], 180, 3 -> 1
6, [179, 89, 59, 44, 35, 29], 180, 3 -> 0
6, [179, 89, 59, 44, 35, 30], 180, 3 -> 1
6, [179, 89, 59, 44, 36, 29], 180, 3 -> 1
6, [179, 90, 59, 44, 35, 29], 180, 3 -> 0
6, [30, 30, 30, 30, 29, 30], 180, 3 -> 0
6, [30, 30, 30, 30, 30, 30], 180, 3 -> 1
true
e um valor de verdade para false
?
len(x)
será mais curta que a escritaN
. Isso é feito, porque para a matriz alocada dinamicamentex
em C não hálen(x)
função direta - portanto, você sempre pode se referir ao comprimento comoN
. Por conveniência, você pode considerar todos os dados de entradaN, x[], T, M
como algumas constantes definidas externamente ou como alguns idiomas incorporados.