Submission #1677914
Source Code Expand
using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; using System.Text.RegularExpressions; using System.Linq; using System.IO; using System.Diagnostics; class Magatro { private readonly int N = 50; private char[] S; private bool[] P; private Random R; private Stopwatch Time; private void Init() { Time = new Stopwatch(); Time.Start(); R = new Random(); P = new bool[N * N]; } private long GetTime() { Time.Stop(); var ret = Time.ElapsedMilliseconds; Time.Start(); return ret; } private void RandomSet() { for (int i = 0; i < N * N; i++) { var r = R.Next(20); if (r == 0) { P[i] = !P[i]; } } } private int GetPoint(int i, int j) { if (i < 0 || j < 0 || i >= N || j >= N) { throw new IndexOutOfRangeException(); } return i * N + j; } private void Scan() { S = new char[N * N]; for (int i = 0; i < N; i++) { var l = Console.ReadLine(); for (int j = 0; j < N; j++) { S[GetPoint(i, j)] = l[j]; } } } private void Write(bool[] ans) { var sb = new StringBuilder(); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { var p = GetPoint(i, j); if (S[p] != '.') { sb.Append(S[p]); } else if (ans[p]) { sb.Append('+'); } else { sb.Append('.'); } } sb.Append('\n'); } Console.Write(sb.ToString()); } private char[] Fall(bool[] b) { var f = new char[N * N]; for (int j = 0; j < N; j++) { int h = N - 1; for (int i = N - 1; i >= 0; i--) { var p = GetPoint(i, j); if (S[p] != '.' || b[p]) { f[GetPoint(h, j)] = S[p]; h--; } } } return f; } private int Score(char[] c) { var check = new bool[N * N]; int maru = 0; int batsu = 0; for (int j = 0; j < N; j++) { for (int i = N - 1; i >= 0; i--) { var gp = GetPoint(i, j); var p = c[gp]; if (p != 'o' && p != 'x') { if (p == '\0') { break; } continue; } if (check[gp]) { continue; } var q = new Queue<int>(); q.Enqueue(gp); int ss = 0; while (q.Count > 0) { var pp = q.Dequeue(); ss++; check[pp] = true; int ii = pp / N; int jj = pp % N; if (ii > 0) { var np = GetPoint(ii - 1, jj); if (!check[np] && c[np] == p) { q.Enqueue(np); } } if (ii < N - 1) { var np = GetPoint(ii + 1, jj); if (!check[np] && c[np] == p) { q.Enqueue(np); } } if (jj > 0) { var np = GetPoint(ii, jj - 1); if (!check[np] && c[np] == p) { q.Enqueue(np); } } if (jj < N - 1) { var np = GetPoint(ii, jj + 1); if (!check[np] && c[np] == p) { q.Enqueue(np); } } } switch (p) { case 'o': maru = Math.Max(maru, ss); break; case 'x': batsu = Math.Max(batsu, ss); break; } } } return maru + batsu; } private int GetScore(bool[] b) { var f = Fall(b); return Score(f); } private void DebugWrite(char[] c) { var sb = new StringBuilder(); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { sb.Append(c[GetPoint(i, j)]); } sb.Append('\n'); } Console.Write(sb.ToString()); } public void Solve() { Scan(); Init(); RandomSet(); Write(P); //Console.WriteLine(GetTime()); //Console.WriteLine(GetScore(P)); //DebugWrite(Fall(P)); } static public void Main() { new Magatro().Solve(); } }
Submission Info
Submission Time | |
---|---|
Task | A - ○×ブロック |
User | mban |
Language | C# (Mono 4.6.2.0) |
Score | 1594 |
Code Size | 5821 Byte |
Status | AC |
Exec Time | 23 ms |
Memory | 13264 KB |
Judge Result
Set Name | test_01 | test_02 | test_03 | test_04 | test_05 | test_06 | test_07 | test_08 | test_09 | test_10 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 130 / 2500 | 170 / 2500 | 162 / 2500 | 187 / 2500 | 198 / 2500 | 94 / 2500 | 153 / 2500 | 142 / 2500 | 171 / 2500 | 187 / 2500 | ||||||||||||||||||||
Status |
|
|
|
|
|
|
|
|
|
|
Set Name | Test Cases |
---|---|
test_01 | subtask_01_01.txt |
test_02 | subtask_01_02.txt |
test_03 | subtask_01_03.txt |
test_04 | subtask_01_04.txt |
test_05 | subtask_01_05.txt |
test_06 | subtask_01_06.txt |
test_07 | subtask_01_07.txt |
test_08 | subtask_01_08.txt |
test_09 | subtask_01_09.txt |
test_10 | subtask_01_10.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask_01_01.txt | AC | 23 ms | 11216 KB |
subtask_01_02.txt | AC | 23 ms | 11216 KB |
subtask_01_03.txt | AC | 23 ms | 13264 KB |
subtask_01_04.txt | AC | 22 ms | 9168 KB |
subtask_01_05.txt | AC | 22 ms | 11216 KB |
subtask_01_06.txt | AC | 22 ms | 9168 KB |
subtask_01_07.txt | AC | 23 ms | 13264 KB |
subtask_01_08.txt | AC | 22 ms | 11216 KB |
subtask_01_09.txt | AC | 23 ms | 11216 KB |
subtask_01_10.txt | AC | 23 ms | 11216 KB |