結果

問題 No.43 野球の試合
ユーザー mbanmban
提出日時 2017-01-04 15:07:37
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 2,678 bytes
コンパイル時間 1,647 ms
コンパイル使用メモリ 108,288 KB
実行使用メモリ 19,584 KB
最終ジャッジ日時 2024-05-09 19:23:49
合計ジャッジ時間 1,816 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 22 ms
18,944 KB
testcase_01 AC 22 ms
18,944 KB
testcase_02 AC 22 ms
19,328 KB
testcase_03 AC 22 ms
19,328 KB
testcase_04 AC 23 ms
19,072 KB
testcase_05 AC 22 ms
18,816 KB
testcase_06 AC 23 ms
19,200 KB
testcase_07 AC 24 ms
19,584 KB
testcase_08 AC 22 ms
19,072 KB
testcase_09 AC 22 ms
18,816 KB
testcase_10 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Text.RegularExpressions;
using System.Linq;


class Magatro
{
    static int N = int.Parse(Console.ReadLine());
    static char[][] s;
    static void Main()
    {
        s = new char[N][];
 for(int i = 0; i < N; i++)
        {
            s[i] = Console.ReadLine().ToArray();
        }
 for(int i = 0; i < N; i++)
        {
            if (s[0][i] == '-')
            {
                s[0][i] = 'o';
                s[i][0] = 'x';
            }
        }
        List<XY> L = new List<XY>(); 
 for(int i = 1; i < N - 1; i++)
        {
            for(int j = i + 1; j < N; j++)
            {
                if (s[i][j] == '-')
                {
                    L.Add(new XY(j, i));
                }
            }
        }
        int loop = (int)Math.Pow(2, L.Count);
        int min = int.MaxValue;
        for(int i = 0; i < loop; i++)
        {
            int q = i;
            char[][] copy = s.ToArray();
            for(int j = 0; j < L.Count; j++)
            {
                if (q % 2 == 1)
                {
                    copy[L[j].Y][L[j].X] = 'o';
                    copy[L[j].X][L[j].Y] = 'x';
                }
                else
                {
                    copy[L[j].Y][L[j].X] = 'x';
                    copy[L[j].X][L[j].Y] = 'o';
                }
                q /= 2;
            }
            min = Math.Min(min, J(copy));
        }
        Console.WriteLine(min);
    }
    static int J(char[][] s)
    {
        T[] Temp = new T[N];
        for(int i = 0; i < N; i++)
        {
            Temp[i] = new T(i);
        }
        for(int i = 0; i < N; i++)
        {
            for(int j = 0; j < N; j++)
            {
                if (i == j)
                {
                    continue;
                }
                if(s[j][i]== 'o')
                {
                    Temp[i].c++;
                }
            }
        }
        T[] copy = Temp.ToArray();
        Array.Sort(copy, (a, b) => a.c.CompareTo(b.c));
        int ans = 0;
        int m = int.MaxValue;
        for(int i = 0; i < N; i++)
        {
            if (m != copy[i].c)
            {
                ans++;
                m = copy[i].c;
            }
            if (copy[i].index == 0)
            {
                return ans;
            }
        }
        return -1;
    }
}
struct XY
{
    public int X, Y;
    public XY(int x,int y)
    {
        X = x;
        Y = y;
    }
}
struct T
{
    public int index, c;
    public T(int i)
    {
        c = 0;
        index = i;
    }
}
0