Sfida di marketing multilivello.
Un pari vuole essere ricompensato. Quindi ha attirato gli Ninvestitori ( N>=1), ogni investitore ha investito x[i]. Quando una somma totale supera la soglia, x[0]+x[1]+...+x[N-1] >= Tun pari può essere ricompensato. Ma solo se sono soddisfatte le seguenti condizioni:
- L'importo minimo degli investitori dovrebbe essere maggiore di
M, (M<=N) - Per almeno un numero intero
k, dovek>=Mek<=N, tutti glikinvestitori devono investire almenoT/kciascuno;
Dato che N, x[], T, Mè necessario determinare se la ricompensa del peer viene generata o meno (risultato booleano, "sì" o "no"). Il codice più corto vince.
Esempi:
N=5; M=3; T=10000, al fine di generare la ricompensa del pari, deve essere soddisfatto uno dei seguenti:
- ogni 3 ha investito almeno 3334 ciascuno
- qualsiasi 4 investito almeno 2500 ciascuno
- tutti e 5 hanno investito almeno 2000 ciascuno
N=6; M=2; T=5000:
- ogni 2 ha investito almeno 2500 ciascuno
- ogni 3 ha investito almeno 1667 ciascuno
- qualsiasi 4 investito almeno 1250 ciascuno
- qualsiasi 5 investito almeno 1000 ciascuno
- tutti e 6 hanno investito almeno 834 ciascuno
generalizzato: per qualsiasi k, dove k>=Me k<=N:
- uno qualsiasi
kdegliNinvestitori ha investito almenoT/kciascuno
Casi test:
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
truee un valore true per false?
len(x)sarà più breve della scritturaN. Questo è fatto, perché per l'array allocato in modo dinamicoxin C non esiste unalen(x)funzione diretta , quindi puoi sempre fare riferimento alla lunghezza comeN. Per comodità, è possibile considerare tutti i dati di inputN, x[], T, Mcome alcune costanti definite esternamente o come incorporati in alcune lingue.