TopCoderのSRM497に参加してみました。結果はEasyは解けたけど、Medium解いてる間に時間切れ。。
まだまだですな。
解いた結果をのせてみます。
Div2 Easy
問題の分析
あなたはフィルタを作る技術者です。
指定されたサイズのモノを通す、あるいは通さないフィルタを作成してください。
フィルタが通すモノのサイズの範囲が最小になるようにしてください。
通すべきか通さないべきかは各サイズごとに指示されます。
方針
通すべきモノのサイズの最小〜最大までをフィルタの通す範囲にする。
ただし、その範囲に通さないべきモノのサイズが含まれていた場合、フィルタを作成することは不可能なため空配列を返す。
using System; using System.Collections.Generic; using System.Text; public class Filtering { public int[] designFilter(int[] sizes, string outcome) { List<int> accepts = new List<int>(); List<int> rejects = new List<int>(); char[] outcomeChars = outcome.ToCharArray(); for(int i = 0;i < outcomeChars.Length;i++) { if (outcomeChars[i].Equals('A')) accepts.Add(sizes[i]); if (outcomeChars[i].Equals('R')) rejects.Add(sizes[i]); } accepts.Sort(); rejects.Sort(); foreach (int reject in rejects) { if (accepts[0] < reject && reject < accepts[accepts.Count - 1]) { int[] result = new int[0]; return result; } } return new int[] { accepts[0], accepts[accepts.Count - 1] }; } }