Çok seviyeli pazarlama ile ilgili zorluk.
Bir akran ödüllendirilmek istiyor. Böylece N
yatırımcıları ( N>=1
) çekti , her i-th yatırımcı yatırım yaptı x[i]
. Toplam bir toplam eşiği aştığında x[0]+x[1]+...+x[N-1] >= T
bir akran ödüllendirilebilir. Ancak sadece aşağıdaki koşullar karşılandığında:
- Minimum yatırımcı tutarı
M
(M<=N
) - En az bir tamsayı için
k
, neredek>=M
vek<=N
herhangi birk
yatırımcı en azT/k
her birine yatırım yapmak zorundadır ;
Verilen N, x[], T, M
akran ödülünün yaratılıp yaratılmadığını belirlemelisiniz (boole sonucu, "evet" veya "hayır"). En kısa kod kazanır.
Örnekler:
N=5; M=3; T=10000
, emsal ödülünü elde etmek için aşağıdakilerden biri yerine getirilmelidir:
- herhangi bir 3 en az 3334 yatırım yaptı
- herhangi bir 4 en az 2500 yatırım yaptı
- 5'in her biri en az 2000 yatırım yaptı
N=6; M=2; T=5000
:
- herhangi 2 en az 2500 yatırım yaptı
- herhangi bir 3 en az 1667 yatırım yaptı
- herhangi bir 4 en az 1250 yatırım yaptı
- her 5 en az 1000 yatırım yaptı
- 6'sı da her biri en az 834 yatırım yaptı
genelleştirilmiş: herhangi biri için k
, nerede k>=M
ve k<=N
:
- yatırımcılardan herhangi
k
biriN
en azT/k
her birine
Test senaryoları:
biçim:
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
falsey değeri ve doğruluk değeri false
?
len(x)
daha kısa olacaktırN
. Bu yapılır, çünküx
C'de dinamik olarak tahsis edilen dizi için doğrudan birlen(x)
işlev yoktur - bu nedenle her zaman uzunluğa olarak başvurabilirsinizN
. Kolaylık sağlamak için, tüm giriş verileriniN, x[], T, M
harici olarak tanımlanmış sabitler veya bazı yerleşik diller olarak düşünebilirsiniz .