C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM619: GoodCompanyDivTwo

各 department について、重複 した work type がないかどうかを判定すればよい。
Div2 Easy にしては やや複雑な問題。

public class GoodCompanyDivTwo {
    public int countGood(int[] superior, int[] workType) {
        int n = superior.Length;
        int ans = 0;
        for (int i = 0; i < n; i++) {
            var department = E.Range(0, n).Where(index => superior[index] == i).ToList();
            department.Add(i);
            if (department.Select(d => workType[d]).Distinct().Count() == department.Count())
                ans++;
        }
        return ans;
    }
}