結果
問題 | No.5003 物理好きクリッカー |
ユーザー | butsurizuki |
提出日時 | 2018-12-25 02:06:01 |
言語 | C (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 323 ms / 10,000 ms |
コード長 | 4,234 bytes |
コンパイル時間 | 174 ms |
実行使用メモリ | 21,924 KB |
スコア | 4,860,454,670 |
平均クエリ数 | 10000.00 |
最終ジャッジ日時 | 2021-07-19 09:35:38 |
合計ジャッジ時間 | 13,224 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge10 |
純コード判定しない問題か言語 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 313 ms
21,336 KB |
testcase_01 | AC | 311 ms
21,828 KB |
testcase_02 | AC | 311 ms
21,684 KB |
testcase_03 | AC | 311 ms
21,504 KB |
testcase_04 | AC | 309 ms
21,852 KB |
testcase_05 | AC | 310 ms
21,852 KB |
testcase_06 | AC | 316 ms
21,456 KB |
testcase_07 | AC | 310 ms
21,348 KB |
testcase_08 | AC | 311 ms
21,360 KB |
testcase_09 | AC | 313 ms
21,504 KB |
testcase_10 | AC | 310 ms
21,324 KB |
testcase_11 | AC | 314 ms
21,864 KB |
testcase_12 | AC | 312 ms
21,504 KB |
testcase_13 | AC | 309 ms
21,864 KB |
testcase_14 | AC | 312 ms
21,348 KB |
testcase_15 | AC | 313 ms
21,672 KB |
testcase_16 | AC | 310 ms
21,348 KB |
testcase_17 | AC | 322 ms
21,876 KB |
testcase_18 | AC | 310 ms
21,864 KB |
testcase_19 | AC | 309 ms
21,504 KB |
testcase_20 | AC | 311 ms
21,528 KB |
testcase_21 | AC | 310 ms
21,864 KB |
testcase_22 | AC | 308 ms
21,840 KB |
testcase_23 | AC | 314 ms
21,324 KB |
testcase_24 | AC | 312 ms
21,516 KB |
testcase_25 | AC | 323 ms
21,360 KB |
testcase_26 | AC | 313 ms
21,828 KB |
testcase_27 | AC | 310 ms
21,504 KB |
testcase_28 | AC | 315 ms
21,336 KB |
testcase_29 | AC | 312 ms
21,504 KB |
testcase_30 | AC | 314 ms
21,516 KB |
testcase_31 | AC | 321 ms
21,348 KB |
ソースコード
#include<stdio.h> #include<string.h> #include<sys/time.h> #define llinf 4154118101919364364 unsigned long long seed; unsigned long long xorshift(){ seed=seed^(seed<<13); seed=seed^(seed>>7); seed=seed^(seed<<17); return seed; } long long llceil(long long a,long long b){if(a%b==0){return a/b;}return (a/b)+1;} char s[524288]; char move[8][16]={ "click", "buy", "sell", "reinforce", "enhclick", "nothing" }; char namebuild[8][16]={ "#", "hand", "lily", "factory", "casino", "grimoire" }; long long bvaluebuild[8]={ 0, 150, 2000, 30000, 600000, 10000000 }; long long tvaluebuild[8][512]={0}; long long ismove(char str[]){ long long i; for(i=0;i<=5;i++){ if(strcmp(move[i],str)==0){ return i; } } return -1; } long long isbuild(char str[]){ long long i; for(i=1;i<=5;i++){ if(strcmp(namebuild[i],str)==0){ return i; } } return -1; } void calcvbuild(){ long long i,j,w; for(i=1;i<8;i++){ for(j=1;j<512;j++){ tvaluebuild[i][j]=llinf; } tvaluebuild[i][1]=bvaluebuild[i]; for(j=2;j<512;j++){ w=llceil(6*tvaluebuild[i][j-1],5); if(w>1000000000000000000){ break; } tvaluebuild[i][j]=w; } } } long long eval(char cmd[10005][16],char inbuild[10005][16]){ long long i,j,n=10000,r=0,ft=0,k=1,sf=0,id,ks,bp; long long madebuild[8]={ 1, 1, 10, 120, 2000, 25000 }; long long enhbuild[8]={ 15, 1500, 20000, 300000, 6000000, 100000000 }; long long buildown[8]={ 0, 0, 0, 0, 0, 0 }; for(i=0;i<n;i++){ if(ft==0){k=1;}else{k=7;} if(strcmp(cmd[i],move[0])==0){ r+=(madebuild[0]*k); } else if(strcmp(cmd[i],move[1])==0){ id=isbuild(inbuild[i]); if(id==-1){ } else{ bp=tvaluebuild[id][buildown[id]+1]; if(sf==1){ bp=llceil(bp*9,10); } if(r<bp){ } else{ r-=bp; buildown[id]++; } } } else if(strcmp(cmd[i],move[2])==0){ id=isbuild(inbuild[i]); if(id==-1){ } else if(buildown[id]==0){ } else{ bp=tvaluebuild[id][buildown[id]]; bp=llceil(bp,4); r+=bp; buildown[id]--; } } else if(strcmp(cmd[i],move[3])==0){ id=isbuild(inbuild[i]); if(id==-1){ } else if(buildown[id]==0){ } else{ ks=enhbuild[id]; if(sf==1){ ks=llceil(9*ks,10); } if(r>=ks){ r-=ks; madebuild[id]*=2; enhbuild[id]*=10; } else{ } } } else if(strcmp(cmd[i],move[4])==0){ ks=enhbuild[0]; if(sf==1){ ks=llceil(9*ks,10); } if(r>=ks){ r-=ks; madebuild[0]*=2; enhbuild[0]*=10; } else{ } } else if(strcmp(cmd[i],move[5])==0){ } else{ } for(j=1;j<=5;j++){ r+=(madebuild[j]*buildown[j]*k); } if(ft>0){ft--;} sf=0; if(s[i]=='B'){ r+=llceil(r,100); } else if(s[i]=='F'){ ft=20; } else if(s[i]=='S'){ sf=1; } } return r; } int main(void){ calcvbuild(); struct timeval tv; gettimeofday(&tv, NULL); seed=(tv.tv_sec*1000000+tv.tv_usec); long long i,j,n,m,k,a,b,c,h,w,r=0,l,t; char dum[16]; char cmd[10005][16]; char bcmd[10005][16]; char inbuild[10005][16]; char binbuild[10005][16]; scanf("%lld%s",&n,s); for(i=0;i<16;i++){ if(i==15){ strcpy(bcmd[i],"enhclick"); } else{strcpy(bcmd[i],"click");} } for(i=16;i<n;i++){ if(xorshift()%25==0){ a=(xorshift()%3); a++; if(a>1){a++;} strcpy(bcmd[i],move[a]); if(a!=4){ a=xorshift()%5; a++; strcpy(binbuild[i],namebuild[a]); } } else{strcpy(bcmd[i],"click");} } for(i=0;i<n;i++){ printf("%s",bcmd[i]); w=ismove(bcmd[i]); if(1<=w && w<=3){ printf(" %s",binbuild[i]); } printf("\n"); fflush(stdout); scanf("%s",dum); } return 0; }