マルチレベルのマーケティング関連の課題。
仲間は報われることを望んでいます。そのため、N
投資家を惹きつけ(N>=1
)、各i番目の投資家が投資しましたx[i]
。合計がしきい値を超えるとx[0]+x[1]+...+x[N-1] >= T
、ピアに報酬が与えられます。ただし、次の条件が満たされている場合のみ。
- 投資家の最低額は
M
、(M<=N
)より大きくする必要があります - 少なくとも1つの整数
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)
関数がないためですN
。つまり、常に長さをとして参照できます。便宜上、すべての入力データN, x[], T, M
を外部で定義された定数または言語の組み込みと見なすことができます。