問題はこちら
No.45 回転寿司 - yukicoder
「今の皿をとった時の最高点」「取らなかった時の最高点」をそれぞれ保存する
int main(){ int n,i,p=0,q=0,t; //pがとった時、qが取らなかった時 scanf("%d",&n); while(n--){ scanf("%d",&i); t=q+i; //今の皿をとったときの点 q=p>q?p:q; //今の皿を取らない時の最高点は、前の皿までで決まる p=t; } printf("%d",p>q?p:q); return 0; }
潰すだけ
t,p,q; main(a){ for(;~scanf("%d",&a);q=p>q?p:q,p=t,t=1)t=q+a*t; p=!printf("%d",p>q?p:q); }
85B
最後が冗長なので、どうにかしてループを1回多くしたいのだけど、どうにもうまく行かず
t,p,q;main(a){for(;~scanf("%d",&a);q=p>q?p:q,p=t,t=1)t=q+a*t;p=!printf("%d",p>q?p:q);} //↑上述の85B t,p,q,a;main(i){for(;i;t=q+a*t,q=p>q?p:q,p=t,t=1)i=~scanf("%d",&a);p=!printf("%d",q);} t,p,q,a;main(i){for(;~scanf("%d",&a)||i--;q=p>q?p:q,p=t,t=1)t=q+a*t;p=!printf("%d",q);} t,p,i=2,a;main(q){for(;i-=scanf("%d",&a)<0;q=p>q?p:q,p=t)t=q+a*!!p;p=!printf("%d",q-1);} p,q,i=2,t;main(a){for(;i-=scanf("%d",&a)<0;q=p>q?p:q,p=t,t=1)t=q+a*t;p=!printf("%d",q);}
以下の83BだとRE
p,q,a,i; main(t){ i=~scanf("%d",&a); t=q+a*!t; q=p>q?p:q; p=t; i?main(0):printf("%d",q); }