結果

問題 No.5002 stick xor
ユーザー iwkjoseciwkjosec
提出日時 2018-05-27 20:19:26
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 52 ms / 1,000 ms
コード長 3,811 bytes
コンパイル時間 3,718 ms
実行使用メモリ 9,168 KB
スコア 40,509
最終ジャッジ日時 2018-05-27 20:19:31
ジャッジサーバーID
(参考情報)
judge7 /
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 51 ms
9,164 KB
testcase_01 AC 51 ms
9,160 KB
testcase_02 AC 51 ms
9,152 KB
testcase_03 AC 51 ms
9,160 KB
testcase_04 AC 51 ms
9,164 KB
testcase_05 AC 51 ms
9,156 KB
testcase_06 AC 51 ms
9,160 KB
testcase_07 AC 51 ms
9,160 KB
testcase_08 AC 52 ms
9,164 KB
testcase_09 AC 51 ms
9,160 KB
testcase_10 AC 51 ms
9,156 KB
testcase_11 AC 52 ms
9,160 KB
testcase_12 AC 51 ms
9,160 KB
testcase_13 AC 52 ms
9,160 KB
testcase_14 AC 51 ms
9,164 KB
testcase_15 AC 51 ms
9,164 KB
testcase_16 AC 51 ms
9,160 KB
testcase_17 AC 51 ms
9,164 KB
testcase_18 AC 51 ms
9,164 KB
testcase_19 AC 51 ms
9,160 KB
testcase_20 AC 51 ms
9,160 KB
testcase_21 AC 50 ms
9,156 KB
testcase_22 AC 50 ms
9,164 KB
testcase_23 AC 51 ms
9,168 KB
testcase_24 AC 51 ms
9,164 KB
testcase_25 AC 51 ms
9,160 KB
testcase_26 AC 51 ms
9,160 KB
testcase_27 AC 51 ms
9,160 KB
testcase_28 AC 51 ms
9,156 KB
testcase_29 AC 51 ms
9,168 KB
testcase_30 AC 51 ms
9,156 KB
testcase_31 AC 51 ms
9,156 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.3.1.61919 (57c81319)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;

class Program
{
    static void Main()
    {
        ReadLine();
        var N = 60;
        var K = 500;
        var L = ReadLine().Split().Select(int.Parse).ToArray();
        var map = new bool[N, N];
        for (int i = 0; i < N; i++)
        {
            var line = ReadLine();
            for (int j = 0; j < N; j++)
            {
                map[i, j] = line[j] == '0';
            }
        }

        var cmd = new int[K, 4];
        for (int k = 0; k < K; k++)
        {
            var x = 0;
            var a = 0;
            var b = 0;
            var c = 0;
            var d = 0;
            for (int i = 0; i < N; i++)
            {
                var n = 0;
                for (int l = 0; l < L[k]; l++)
                {
                    n += map[i, l] ? 0 : 1;
                }
                if (x < n)
                {
                    x = n;
                    a = c = i;
                    b = 0;
                    d = L[k] - 1;
                }
                for (int j = 0; j < N - L[k]; j++)
                {
                    n -= map[i, j] ? 0 : 1;
                    n += map[i, j + L[k]] ? 0 : 1;
                    if (x < n)
                    {
                        x = n;
                        a = c = i;
                        b = j + 1;
                        d = j + L[k];
                    }
                }
            }
            for (int j = 0; j < N; j++)
            {
                var n = 0;
                for (int l = 0; l < L[k]; l++)
                {
                    n += map[l, j] ? 0 : 1;
                }
                if (x < n)
                {
                    x = n;
                    b = d = j;
                    a = 0;
                    c = L[k] - 1;
                }
                for (int i = 0; i < N - L[k]; i++)
                {
                    n -= map[i, j] ? 0 : 1;
                    n += map[i + L[k], j] ? 0 : 1;
                    if (x < n)
                    {
                        x = n;
                        b = d = j;
                        a = i + 1;
                        c = i + L[k];
                    }
                }
            }
            cmd[k, 0] = a;
            cmd[k, 1] = b;
            cmd[k, 2] = c;
            cmd[k, 3] = d;
            Act(map, a, b, c, d);
        }

        for (int i = 0; i < K; i++)
        {
            var a = cmd[i, 0];
            var b = cmd[i, 1];
            var c = cmd[i, 2];
            var d = cmd[i, 3];
            WriteLine($"{a + 1} {b + 1} {c + 1} {d + 1}");
        }
    }

    static int BlackCount(bool[,] map, int a, int b, int c, int d)
    {
        var w = 0;
        if (a == c)
        {
            var x = Math.Min(b, d);
            var r = x + Math.Abs(b - d) + 1;
            for (int j = x; j < r; j++)
            {
                if (!map[a, j]) w++;
            }
            return w;
        }
        else
        {
            var y = Math.Min(a, c);
            var r = y + Math.Abs(a - c) + 1;
            for (int j = y; j < r; j++)
            {
                if (!map[j, b]) w++;
            }
            return w;
        }
    }

    static void Act(bool[,] map, int a, int b, int c, int d)
    {
        if (a == c)
        {
            var x = Math.Min(b, d);
            var r = x + Math.Abs(b - d) + 1;
            for (int j = x; j < r; j++)
            {
                map[a, j] = !map[a, j];
            }
        }
        else
        {
            var y = Math.Min(a, c);
            var r = y + Math.Abs(a - c) + 1;
            for (int j = y; j < r; j++)
            {
                map[j, b] = !map[j, b];
            }
        }
    }
}
0