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

メモ

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

yukicoder No.341 沈黙の期間

問題はこちら
No.341 沈黙の期間 - yukicoder

まず「……」とだけ書いたテキストをUTF-8で保存してバイナリエディタで開くと
00000000: EF BB BF E2 80 A6 E2 80 A6
となった。多分「E2 80 A6」が「…」なんだろうけどじゃあ「EF BB BF」ってなんだよとググったらBOMと呼ばれるもので、今回はついてないとされてるやつのようだ。
gccのcharは何もしないとsignedになるらしいので次のように書ける

int main(){
	char s[999];
	int i,n=0,m=0;
	gets(s);
	for(i=0;s[i];i++){
		if(s[i]==-30&&s[i+1]==-128&&s[i+2]==-90){
			n++;
			i+=2;
			//次は3つ先を見るので、iが合計で3増えるように、ここで+2しておく
			if(m<n)m=n;
			//最大値の更新
		}
		else n=0;
		//現在値のリセット
	}
	printf("%d",m);
	return 0;
}

ぎゅっと縮めて配列の大きさを省略

char s[];
i,n,m;
main(){
	for(gets(s);s[i];)s[i+2]+90|s[i+1]+128|s[i++]+30?n=0:(i+=2,m<++n?m=n:0);
	i=!printf("%d",m);
}

113B