問題はこちら
No.116 門松列(1) - yukicoder
前から順に調べていくだけ
int main(){ int a,b,c,n,s=0; scanf("%d%d%d",&n,&a,&b); n-=2; while(n--){ scanf("%d",&c); if(a-c&&(a<b&&c<b||b<a&&b<c))s++; //門松列かチェック a=b;b=c; } printf("%d",s); return 0; }
とりあえずこれを素直に縮めてみる
a,b,s;main(c){ for(scanf("%*d%d%d",&a,&b);~scanf("%d",&c);a=b,b=c)s+=a-c&&(a-b)*(c-b)>0; a=!printf("%d",s); }
値の受け渡し…とくればmain再帰だ(短絡)
f,c,s;main(a,b){f=~scanf("%d",&c)?s+=++f>3&(a-b)*(c-b)>0&&a-c,main(b,c):!printf("%d",s);}
89B