Многоуровневая маркетинговая задача.
Пэр хочет получить вознаграждение. Таким образом, это привлекло Nинвесторов ( N>=1), каждый i-й инвестор инвестировал x[i]. Когда общая сумма превышает порог, x[0]+x[1]+...+x[N-1] >= Tпартнер может быть вознагражден. Но только при соблюдении следующих условий:
- Минимальное количество инвесторов должно быть больше
M, (M<=N) - По крайней мере, для одного целого числа
k, гдеk>=Mиk<=Nлюбыеkинвесторы должны вкладывать, по крайней мере,T/kкаждое;
Учитывая, что N, x[], T, Mвы должны определить, генерируется ли вознаграждение пира или нет (логический результат, «да» или «нет»). Самый короткий код выигрывает.
Примеры:
N=5; M=3; T=10000, чтобы получить вознаграждение пэра, должно быть выполнено одно из следующих условий:
- любые 3 инвестированы не менее 3334 каждый
- любые 4 инвестировали не менее 2500 каждый
- все 5 вложено не менее 2000 каждый
N=6; M=2; T=5000:
- любые 2 инвестированы не менее 2500 каждый
- любые 3 инвестированы не менее 1667 каждый
- любые 4 инвестировали не менее 1250 каждый
- любые 5 вложено не менее 1000 каждый
- все 6 вложено не менее 834 каждый
обобщенно: для любого k, где k>=Mи k<=N:
- любой
kизNинвесторов вложил хотя быT/kкаждого
Тестовые случаи:
формат:
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и истинное значение для false?
len(x)будет короче, чем письмоN. Это сделано потому, что для динамически размещаемого массиваxв C нет прямойlen(x)функции - поэтому вы всегда можете ссылаться на length какN. Для удобства вы можете рассматривать все входные данныеN, x[], T, Mкак некоторые внешне определенные константы или как встроенные в язык.