結果
問題 | No.1345 Beautiful BINGO |
ユーザー |
|
提出日時 | 2021-01-24 19:22:29 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,248 bytes |
コンパイル時間 | 2,619 ms |
コンパイル使用メモリ | 107,904 KB |
実行使用メモリ | 46,848 KB |
最終ジャッジ日時 | 2025-01-03 11:11:19 |
合計ジャッジ時間 | 55,501 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 45 TLE * 16 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.Linq; using System.Numerics; class D { static int[] Read() => Array.ConvertAll(Console.ReadLine().Split(), int.Parse); static (int, int) Read2() { var a = Read(); return (a[0], a[1]); } static void Main() { var (n, m) = Read2(); var a = Array.ConvertAll(new bool[n], _ => Read()); var rowSums = a.Select(v => v.Sum()).ToArray(); var min = 1 << 30; var b = new bool[n, n]; var rn = Enumerable.Range(0, n).ToArray(); for (int x = 0; x < 1 << n + 2; x++) { Array.Clear(b, 0, n * n); var count = 0; for (int j = 0; j < n; j++) { if ((x & (1 << j)) == 0) continue; for (int i = 0; i < n; i++) b[i, j] = true; count++; } if ((x & (1 << n)) != 0) { for (int i = 0; i < n; i++) b[i, i] = true; count++; } if ((x & (1 << n + 1)) != 0) { for (int i = 0; i < n; i++) b[i, n - 1 - i] = true; count++; } var rows = Array.ConvertAll(rn, i => rn.Sum(j => b[i, j] ? a[i][j] : 0)); var sum = rows.Sum(); if (count >= m) { min = Math.Min(min, sum); continue; } var diffs = Array.ConvertAll(rn, i => rowSums[i] - rows[i]); Array.Sort(diffs); min = Math.Min(min, sum + diffs.Take(m - count).Sum()); } Console.WriteLine(min); } }