#include using namespace std; // const int64_t CYCLES_PER_SEC=2800000000; struct Timer{ int64_t start; Timer(){reset();} void reset(){start=getcycle();} void plus(double a){start-=(a*CYCLES_PER_SEC);} inline double get(){return (double)(getcycle()-start)/CYCLES_PER_SEC;} inline int64_t getcycle(){ uint32_t low,high; __asm__ volatile ("rdtsc":"=a"(low),"=d"(high)); return ((int64_t)low)|((int64_t)high<<32); } }; int n; string s; vector efficiency(6); vector> buyprice(6,vector(10001)); vector> sellprice(6,vector(10001)); vector> reinforceprice(6,vector(10001)); // struct action{ int type=-1;//0:click.1:buy,2:sell,3:reinforce,4:enhclick int idx=-1;//0:click,1:hand,2:lily,3:factory,4:casino,5:grimoire }; struct state{ long long cookie=0; long long future=0; vector order; int inst_cn[6]={1,0,0,0,0,0};//0:click,1:hand,2:lily,3:factory,4:casino,5:grimoire int inst_lv[6]={0,0,0,0,0,0};//0:click,1:hand,2:lily,3:factory,4:casino,5:grimoire }; inline bool operator<(const state&left,const state&right){ return left.future==right.future?left.cookie nowstate; state nii; nowstate.push(nii); int fever=0; bool sale=false; for(int i=0;i nextstate; for(int j=0;j nexstate; state now=nowstate.top(); nowstate.pop(); //action //click now.cookie+=now.inst_cn[0]*(1LL<=2&&i<=1000){ break; } if(now.cookie>=buyprice[k][now.inst_cn[k]]){ now.cookie-=(sale?floor(buyprice[k][now.inst_cn[k]]*0.9):buyprice[k][now.inst_cn[k]]); now.inst_cn[k]++; now.future+=(i<=9900)*efficiency[k]*now.inst_cn[k]*(1LL<=reinforceprice[k][now.inst_lv[k]]){ now.cookie-=(sale?floor(reinforceprice[k][now.inst_lv[k]]*0.9):reinforceprice[k][now.inst_lv[k]]); now.inst_lv[k]++; now.future+=(i<=9900)*efficiency[k]*now.inst_cn[k]*(1LL<=reinforceprice[0][now.inst_lv[0]]){ now.cookie-=(sale?floor(reinforceprice[0][now.inst_lv[0]]*0.9):reinforceprice[0][now.inst_lv[0]]); now.inst_lv[0]++; now.future+=efficiency[0]*now.inst_cn[0]*(1LL<0?7:1); } if(s[i]=='B'){ mow.cookie+=floor(mow.cookie*0.01); } (mow.future*=(n-i-1))/=(n-i); nextstate.push(mow); } } //effect if(s[i]=='F'){ fever=20; }else if(fever>0){ fever--; } if(s[i]=='S'){ sale=true; }else if(sale){ sale=false; } nowstate=nextstate; } cerr<>n>>s; // cerr<<"input ok"< nii=BeamSearch().order; for(int i=0;i>hoge; } } // int main(){ // Timer nii; input(); setprice(); output(); // cerr<