読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.116 門松列(1)

問題はこちら
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