結果

問題 No.5018 Let's Make a Best-seller Book
ユーザー titia
提出日時 2023-10-01 15:23:04
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,572 bytes
コンパイル時間 112 ms
コンパイル使用メモリ 10,952 KB
実行使用メモリ 25,064 KB
スコア 0
平均クエリ数 41.91
最終ジャッジ日時 2023-10-01 15:23:15
合計ジャッジ時間 9,830 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other WA * 100
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline

T,N,Money=map(int,input().split())

SELLS=[1]*N
S = [0] * N
P = [0] * N
R = [0] * N

# 序盤は少しだけ売って人気度を上げ、
# 人気度が上がったらたくさん売りさばくのが最適そう。


for tests in range(T):
    ALL=Money//500
    #ALL=min(ALL,50*(tests+1))

    if max(P)>=50:
        ANS=[0]*N
        for i in range(N):
            ANS[i]=ALL*SELLS[i]//SUM
    else:
        ANS=[0]*N
        for i in range(N):

            OK=1
            NG=ALL+1

            while OK+1<NG:
                mid=(OK+NG)//2

                if (mid**(0.5))*(1.05**P[i])*0.75>=mid*0.3:
                    OK=mid
                else:
                    NG=mid
                    
            ANS[i]=max(0,OK-R[i])

        SUM=sum(ANS)

        if SUM>ALL:
            for i in range(N):
                ANS[i]=ALL*ANS[i]//SUM

    if max(P)<=55 and Money>=8000000:
        print(2,5,flush=True)
    elif max(P)<=56 and Money>=4000000:
        print(2,4,flush=True)
    elif max(P)<=57 and tests>=5 and Money>=2000000:
        print(2,3,flush=True)
    elif max(P)<=58 and tests>=5 and Money>=1000000:
        print(2,2,flush=True)
    elif max(P)<=59 and tests>=5 and Money>=500000:
        print(2,1,flush=True)
    else:
        print("1",*ANS,flush=True)

    Money=int(input())
    if Money==-1:
        exit()
    S=list(map(int,input().split()))
    P=list(map(int,input().split()))
    R=list(map(int,input().split()))

    for i in range(N):
        SELLS[i]+=S[i]

    

    
            
        
0