結果

問題 No.5002 stick xor
ユーザー iwkjoseciwkjosec
提出日時 2018-05-27 13:17:42
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 284 ms / 1,000 ms
コード長 3,075 bytes
コンパイル時間 12,411 ms
実行使用メモリ 9,164 KB
スコア 40,353
最終ジャッジ日時 2018-05-27 13:17:57
ジャッジサーバーID
(参考情報)
judge9 /
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 32
権限があれば一括ダウンロードができます
コンパイルメッセージ
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++)
{
for (int j = 0; j < N - L[k]; j++)
{
var n = BlackCount(map, i, j, i, j + L[k]-1);
if (x < n)
{
x = n;
a = c = i;
b = j;
d = j + L[k]-1;
}
}
}
for (int i = 0; i < N - L[k]; i++)
{
for (int j = 0; j < N; j++)
{
var n = BlackCount(map, i, j, i + L[k]-1, j);
if (x < n)
{
x = n;
b = d = j;
a = i;
c = i + L[k]-1;
}
}
}
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];
}
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0