結果
| 問題 |
No.1594 Three Classes
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-07-09 21:58:27 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,541 bytes |
| コンパイル時間 | 1,947 ms |
| コンパイル使用メモリ | 108,124 KB |
| 実行使用メモリ | 19,072 KB |
| 最終ジャッジ日時 | 2024-07-01 16:18:39 |
| 合計ジャッジ時間 | 3,322 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 2 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
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 long[] ReadL() => Array.ConvertAll(Console.ReadLine().Split(), long.Parse);
static void Main() => Console.WriteLine(Solve() ? "Yes" : "No");
static bool Solve()
{
var n = int.Parse(Console.ReadLine());
var es = Read();
var sum = es.Sum();
if (sum % 3 != 0) return false;
sum /= 3;
var rn = Enumerable.Range(0, n).ToArray();
var ok = false;
AllBoolCombination(n, b =>
{
var s = 0;
for (int i = 0; i < n; i++)
{
if (b[i])
{
s += es[i];
}
}
if (s != sum) return false;
var inds = Array.FindAll(rn, i => b[i]);
var a = Array.ConvertAll(inds, i => es[i]);
if (!Check2(a, sum)) return false;
ok = true;
return true;
});
return ok;
}
static bool Check2(int[] a, int sum)
{
var n = a.Length;
var ok = false;
AllBoolCombination(n, b =>
{
var s = 0;
for (int i = 0; i < n; i++)
{
if (b[i])
{
s += a[i];
}
}
if (s != sum) return false;
ok = true;
return true;
});
return ok;
}
public static void AllBoolCombination(int n, Func<bool[], bool> action)
{
if (n > 30) throw new InvalidOperationException();
var pn = 1 << n;
var b = new bool[n];
for (int x = 0; x < pn; ++x)
{
for (int i = 0; i < n; ++i) b[i] = (x & (1 << i)) != 0;
if (action(b)) break;
}
}
}