static void Main() { var ss = new StreamScanner(new StreamReader(Console.OpenStandardInput())); var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; new Program().Solve(ss, sw); sw.Flush(); }
void Solve(StreamScanner ss, StreamWriter sw) { //--------------------------------- N = ss.Next(int.Parse); K = ss.Next(int.Parse); K2 = K * 2; imos = new int[K2 + 1, K2 + 1]; for (var i = 0; i < N; i++) { var X = ss.Next(int.Parse); var Y = ss.Next(int.Parse); var C = ss.Next(String); if (C == "B") { X += K; } Add(X, Y, X + K - 1, Y + K - 1); Add(X + K, Y + K, X + K2 - 1, Y + K2 - 1); } for (var i = 0; i <= 2 * K; i++) { for (var j = 0; j <= 2 * K; j++) { if (i != 0) { imos[i, j] += imos[i - 1, j]; } if (j != 0) { imos[i, j] += imos[i, j - 1]; } if (i != 0 && j != 0) { imos[i, j] -= imos[i - 1, j - 1]; } } } var max = 0; foreach (var value in imos) { max = Math.Max(max, value); } sw.WriteLine(max); //--------------------------------- }