結果

問題 No.5003 物理好きクリッカー
ユーザー Mizuwater0
提出日時 2018-12-08 01:10:41
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 396 ms
コード長 36,915 Byte
コンパイル時間 741 ms
使用メモリ 16,144 KB
スコア 89,468,555,485
平均クエリ数 10000.00
最終ジャッジ日時 2018-12-08 01:10:57

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
gen_case1.txt AC 360 ms
14,076 KB
gen_case2.txt AC 364 ms
14,080 KB
gen_case3.txt AC 362 ms
14,088 KB
gen_case4.txt AC 363 ms
14,080 KB
gen_case5.txt AC 364 ms
14,096 KB
gen_case6.txt AC 367 ms
14,088 KB
gen_case7.txt AC 363 ms
14,088 KB
gen_case8.txt AC 359 ms
14,076 KB
gen_case9.txt AC 364 ms
14,076 KB
gen_case10.txt AC 365 ms
14,084 KB
gen_case11.txt AC 367 ms
14,080 KB
gen_case12.txt AC 366 ms
16,144 KB
gen_case13.txt AC 367 ms
14,096 KB
gen_case14.txt AC 395 ms
14,088 KB
gen_case15.txt AC 365 ms
16,144 KB
gen_case16.txt AC 361 ms
14,088 KB
gen_case17.txt AC 367 ms
14,076 KB
gen_case18.txt AC 360 ms
14,088 KB
gen_case19.txt AC 362 ms
14,092 KB
gen_case20.txt AC 365 ms
14,088 KB
gen_case21.txt AC 361 ms
14,084 KB
gen_case22.txt AC 362 ms
14,092 KB
gen_case23.txt AC 396 ms
14,084 KB
gen_case24.txt AC 361 ms
14,092 KB
gen_case25.txt AC 364 ms
14,088 KB
gen_case26.txt AC 384 ms
14,080 KB
gen_case27.txt AC 366 ms
14,092 KB
gen_case28.txt AC 363 ms
14,088 KB
gen_case29.txt AC 362 ms
14,088 KB
gen_case30.txt AC 395 ms
14,084 KB
gen_case31.txt AC 362 ms
14,088 KB
gen_case32.txt AC 363 ms
14,084 KB
テストケース一括ダウンロード

ソースコード

diff #
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
#include<string>
#include<functional>
using namespace std;
typedef	long long int ll;

//クッキーの量と1ターンあたりの生産量(クリック含まず、含む)
    ll cooky = 0;
    ll pro = 1;
    ll clipro = 1;
    //現在の施設価格
    ll click = 15;
    ll hand = 150;
    ll lily = 2000;
    ll factory = 30000;
    ll casino = 600000;
    ll grimoire = 10000000;
    //強化にかかるお金
    ll rfgri = 100000000;
    ll enhcli = 15;
    ll rfhan = 1500;
    ll rflil = 20000;
    ll rffac = 300000;
    ll rfcas = 6000000;
    //強化回数
    ll enhclitime = 0;
    ll rfgritime = 0;
    ll rfhantime = 0;
    ll rfliltime = 0;
    ll rffactime = 0;
    ll rfcastime = 0;
    //各施設の数(強化した場合は2倍になる)
    ll gritime = 0;
    ll hantime = 0;
    ll liltime = 0;
    ll factime = 0;
    ll castime = 0;
    //各操作の効率
    ll hanm;
    ll lilm;
    ll facm;
    ll casm;
    ll grim;
    ll rfgrim;
    ll enhclim;
    ll rfhanm;
    ll rflilm;
    ll rffacm;
    ll rfcasm;
    //目標金額
    ll amemoney;
    //目標金額上限
    ll amemax = 500000000000;
    //目標金額下限
    ll amemin = 0;
    //パラメータ
    ll para = 1;

int minn(ll a, ll b, ll c, ll d, ll e, ll f, ll g, ll h, ll i, ll j, ll k){
    ll minx = 1000000000000;
    int mark = -1;
    ll risu[11] = {a,b,c,d,e,f,g,h,i,j,k};
    for(int i = 0; i < 11; i++){
        if(risu[i] < minx){
            minx = risu[i];
            mark = i;
        }
    }
    return mark;
}

int main(){
    int n;
    double t = 1.25;
    double u = 1.04;
    char s[10000];
    scanf("%d%s", &n, s);
    for(int i = 0; i < n; i++){
        if(s[i] == 'F'){
            s[i] = 'N';
            for(int j = 0; j < 20; j++){
                if(i+j+1 == n){
                    i = n-21;
                    break;
                }
                s[i+1+j] = 'F';
            }
            i += 20;
        }
        if(s[i] == 'S'){
            s[i] = 'N';
            if(i+1 == n){
                break;
            }
            s[i+1] = 'S';
            i++;
        }
    }
    int comand[10000];
    int turn;
    while(1){
        if(amemax == amemin || amemax-1 == amemin){
            break;
        }
        amemoney = (amemax+amemin)/2;
    //クッキーの量と1ターンあたりの生産量(クリック含まず、含む)
    cooky = 0;
    pro = 1;
    clipro = 1;
    //現在の施設価格
    click = 15;
    hand = 150;
    lily = 2000;
    factory = 30000;
    casino = 600000;
    grimoire = 10000000;
    //強化にかかるお金
    rfgri = 100000000;
    enhcli = 15;
    rfhan = 1500;
    rflil = 20000;
    rffac = 300000;
    rfcas = 6000000;
    //強化回数
    enhclitime = 0;
    rfgritime = 0;
    rfhantime = 0;
    rfliltime = 0;
    rffactime = 0;
    rfcastime = 0;
    //各施設の数(強化した場合は2倍になる)
    gritime = 0;
    hantime = 0;
    liltime = 0;
    factime = 0;
    castime = 0;
    //パラメータ
    para = 1;
    //ターン
    turn = 0;
        while(1){
        //各操作の効率 かかるターン数をデメリットとして加算してもいいかも
        hanm = pow(hand,t)/(1*pow(2,rfhantime));
        lilm = pow(lily,t)/(10*pow(2,rfliltime));
        facm = pow(factory,t)/(120*pow(2,rffactime));
        casm = pow(casino,t)/(2000*pow(2,rfcastime));
        grim = pow(grimoire,t)/(25000*pow(2,rfgritime));
        if(gritime!=0){
        rfgrim = pow(rfgri,t)/(25000*gritime);
        }
        else{
            rfgrim = 1000000000000;
        }
        enhclim = pow(enhcli,t)/(1*pow(2,enhclitime));
        if(hantime!=0){
        rfhanm = pow(rfhan,t)/(1*hantime);
        }
        else{
            rfhanm = 1000000000000;
        }
        if(liltime!=0){
        rflilm = pow(rflil,t)/(10*liltime);
        }
        else{
            rflilm = 1000000000000;
        }
        if(factime!=0){
        rffacm = pow(rffac,t)/(120*factime);
        }
        else{
            rffacm = 1000000000000;
        }
        if(castime!=0){
        rfcasm = pow(rfcas,t)/(2000*castime);
        }
        else{
            rfcasm = 1000000000000;
        }
        int opt = minn(hanm, lilm, facm, casm, grim, rfgrim, enhclim, rfhanm, rflilm, rffacm, rfcasm);
        // printf("%d\n", opt);
        //optの値で場合分け
        if(opt == 0){
            //handを買う場合
            if((hand-cooky)/clipro+amemoney/(clipro+1*pow(2,rfhantime)) <= u*((amemoney-cooky)/clipro)){
                //ずっとクリック
                while(cooky < hand){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //hand購入
                comand[turn] = 1;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (hand*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= hand;
                }
                //更新
                hand = (hand*6+4)/5;
                clipro += 1*pow(2,rfhantime);
                pro += 1*pow(2,rfhantime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                hantime += pow(2,rfhantime);
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            } 
        }   
        if(opt == 1){
            //lilyを買う場合
            if((lily-cooky)/clipro+amemoney/(clipro+10*pow(2,rfliltime)) < u*((amemoney-cooky)/clipro)){
                //ずっとクリック
                while(cooky < lily){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //lily購入
                comand[turn] = 2;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (lily*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= lily;
                }
                //更新
                lily = (lily*6+4)/5;
                clipro += 10*pow(2,rfliltime);
                pro += 10*pow(2,rfliltime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                liltime += pow(2,rfliltime);
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            } 
        }
        if(opt == 2){
            //factoryを買う場合
            if((factory-cooky)/clipro+amemoney/(clipro+120*pow(2,rffactime)) < u*((amemoney-cooky)/clipro)){
                //ずっとクリック
                while(cooky < factory){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //factory購入
                comand[turn] = 3;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (factory*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= factory;
                }
                //更新
                factory = (factory*6+4)/5;
                clipro += 120*pow(2,rffactime);
                pro += 120*pow(2,rffactime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                factime += pow(2,rffactime);
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            } 
        }
        if(opt == 3){
            //casinoを買う場合
            if((casino-cooky)/clipro+amemoney/(clipro+2000*pow(2,rfcastime)) < u*((amemoney-cooky)/clipro)){
                //ずっとクリック
                while(cooky < casino){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //casino購入
                comand[turn] = 4;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (casino*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= casino;
                }
                //更新
                casino = (casino*6+4)/5;
                clipro += 2000*pow(2,rfcastime);
                pro += 2000*pow(2,rfcastime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                castime += pow(2,rfcastime);
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            } 
        }
        if(opt == 4){
            //grimoireを買う場合
            if((grimoire-cooky)/clipro+amemoney/(clipro+25000*pow(2,rfgritime)) < u*((amemoney-cooky)/clipro)){
                //ずっとクリック
                while(cooky < grimoire){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //grimoire購入
                comand[turn] = 5;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (grimoire*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= grimoire;
                }
                //更新
                grimoire = (grimoire*6+4)/5;
                clipro += 25000*pow(2,rfgritime);
                pro += 1*pow(2,rfgritime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                gritime += pow(2,rfgritime);
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            } 
        }
        if(opt == 5){
            //grimoireを強化する場合
            if((rfgri-cooky)/clipro+amemoney/(clipro+25000*gritime) < u*((amemoney-cooky)/clipro)){
                while(cooky < rfgri){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //grimoire強化
                comand[turn] = 16;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (rfgri*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= rfgri;
                }
                //更新
                rfgri = rfgri*10;
                rfgritime++;
                clipro += gritime*25000;
                pro += gritime*25000;
                gritime *= 2;
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        if(opt == 6){
            //clickを強化する場合
            if((enhcli-cooky)/clipro+amemoney/(clipro+1*pow(2,enhclitime)) < u*((amemoney-cooky)/clipro)){
                while(cooky < enhcli){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //click強化
                comand[turn] = 11;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (enhcli*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= enhcli;
                }
                //更新
                enhcli = enhcli*10;
                clipro += 1*pow(2,enhclitime);
                pro += 1*pow(2,enhclitime);
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                enhclitime++;
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        if(opt == 7){
            //handを強化する場合
            if((rfhan-cooky)/clipro+amemoney/(clipro+1*hantime) < u*((amemoney-cooky)/clipro)){
                while(cooky < rfhan){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //hand強化
                comand[turn] = 12;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (rfhan*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= rfhan;
                }
                //更新
                rfhan = rfhan*10;
                rfhantime++;
                clipro += hantime*1;
                pro += hantime*1;
                hantime *= 2;
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        if(opt == 8){
            //lilyを強化する場合
            if((rflil-cooky)/clipro+amemoney/(clipro+10*liltime) < u*((amemoney-cooky)/clipro)){
                while(cooky < rflil){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //lily強化
                comand[turn] = 13;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (rflil*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= rflil;
                }
                //更新
                rflil = rflil*10;
                rfliltime++;
                clipro += liltime*10;
                pro += liltime*10;
                liltime *= 2;
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        if(opt == 9){
            //factoryを強化する場合
            if((rffac-cooky)/clipro+amemoney/(clipro+120*factime) < u*((amemoney-cooky)/clipro)){
                while(cooky < rffac){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //factory強化
                comand[turn] = 14;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (rffac*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= rffac;
                }
                //更新
                rffac = rffac*10;
                rffactime++;
                clipro += 120*factime;
                pro += 120*factime;
                factime *= 2;
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        if(opt == 10){
            //casinoを強化する場合
            if((rfcas-cooky)/clipro+amemoney/(clipro+2000*castime) < u*((amemoney-cooky)/clipro)){
                while(cooky < rfcas){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n-1) break;
                }
                if(turn==n-1 || turn==n-2){
                    amemax = amemoney;
                    break;
                }
                //casino強化
                comand[turn] = 15;
                //セール時の購入
                if(s[turn] == 'S'){
                    cooky -= (rfcas*9+9)/10;
                }
                //非セール時の購入
                else{
                    cooky -= rfcas;
                }
                //更新
                rfcas = rfcas*10;
                rfcastime++;
                clipro += 2000*castime;
                pro += 2000*castime;
                castime *= 2;
                if(s[turn] == 'F'){
                    cooky += 7*pro;
                }
                else{
                    cooky += pro;
                }
                if(s[turn] == 'B'){
                    cooky = cooky + (cooky+99)/100;
                }
                turn++;
                continue;
            }
            else{
                //ずっとクリック
                while(cooky < amemoney){
                    comand[turn] = 0;
                    //フィーバー時の生産
                    if(s[turn] == 'F'){
                        cooky += 7*clipro;
                    }
                    //フィーバーしてないときの生産
                    else{
                        cooky += clipro;
                    }
                    //ボーナスターンの追加クッキー
                    if(s[turn] == 'B'){
                        cooky = (cooky+99)/100 + cooky;
                    }
                    turn++;
                    if(turn==n) break;
                }
                if(turn == n && cooky < amemoney){
                    amemax = amemoney;
                    break;
                }
                amemin = amemoney;
                break;
            }
        }
        }
    }
    for(int i = 0; i < n; i++){
        //コマンド列
        if(comand[i]==-1){
            printf("nothing\n");
        }
        if(comand[i]==0){
            printf("click\n");
        }
        if(comand[i]==1){
            // printf("turn %d: ", i);
            printf("buy hand\n");
        }
        if(comand[i]==2){
            // printf("turn %d: ", i);
            printf("buy lily\n");
        }
        if(comand[i]==3){
            // printf("turn %d: ", i);
            printf("buy factory\n");
        }
        if(comand[i]==4){
            // printf("turn %d: ", i);
            printf("buy casino\n");
        }
        if(comand[i]==5){
            // printf("turn %d: ", i);
            printf("buy grimoire\n");
        }
        if(comand[i]==6){
            // printf("turn %d: ", i);
            printf("sell hand\n");
        }
        if(comand[i]==7){
            // printf("turn %d: ", i);
            printf("sell lily\n");
        }
        if(comand[i]==8){
            // printf("turn %d: ", i);
            printf("sell factory\n");
        }
        if(comand[i]==9){
            // printf("turn %d: ", i);
            printf("sell casino\n");
        }
        if(comand[i]==10){
            // printf("turn %d: ", i);
            printf("sell grimoire\n");
        }
        if(comand[i]==11){
            // printf("turn %d: ", i);
            printf("enhclick\n");
        }
        if(comand[i]==12){
            // printf("turn %d: ", i);
            printf("reinforce hand\n");
        }
        if(comand[i]==13){
            // printf("turn %d: ", i);
            printf("reinforce lily\n");
        }
        if(comand[i]==14){
            // printf("turn %d: ", i);
            printf("reinforce factory\n");
        }
        if(comand[i]==15){
            // printf("turn %d: ", i);
            printf("reinforce casino\n");
        }
        if(comand[i]==16){
            // printf("turn %d: ", i);
            printf("reinforce grimoire\n");
        }
        fflush(stdout);
        scanf("%s", s);
    }
    // cout << cooky << " " << endl;
    return 0;
}
0