見出し画像

コーディング練習@Coder.1

AtCoderによるコーディングの訓練日記です。可読性の高いコードも目指していきたいです。言語はC。ご指摘があればよろしくお願いいたします。可読性に関しては

を参考にしています。がまだまだド素人です。

コンテスト166のB問題。問題文:

問題

お菓子が数種類(各種の個数も与えられる)あってこれを配る。お菓子をもらえなかったsnuke(すぬけ)の人数を出力する問題。

方針

お菓子をもっている/いないのニ値配列を人数分用意して全部1で初期化。ある人に菓子が配られたら0にする。最後に足しあわせる。

実装

 #include <stdio.h>

int main(){
	int n_snuke;
	scanf("%d", &n_snuke);
	int has_trts[n_snuke+1];

	//お菓子を持っている->0;持っていない->1
	for(int snuke = 1; snuke <= n_snuke; snuke++)
		has_trts[snuke] = 1;

	int n_trtkinds;
	scanf("%d", &n_trtkinds);
	for(int trt_i = 1; trt_i <= n_trtkinds; trt_i++){
		int n_trt_i, trt_i_to;
		scanf("%d", &n_trt_i);
		for(int trt_i_index = 1; trt_i_index <= n_trt_i; trt_i_index++){
			scanf("%d", &trt_i_to);
			has_trts[trt_i_to] = 0;
		}
	}

	int ans = 0;
	for(int snuke = 1; snuke <= n_snuke; snuke++)
		ans += has_trts[snuke];
	printf("%d", ans);

	return 0;
}

感想

他に計算量を節約できる方法ってあるのか…変数の名付けって難しすぎ。英語力のなさ。というかすぬけって誰だよ。(追記2020/5/9:snukeさんはAtCoder運営側のレッドコーダーでした。普通にすごい人でした。)

この記事が気に入ったらサポートをしてみませんか?