結果

問題 No.467 隠されていたゲーム
ユーザー claw88claw88
提出日時 2016-12-23 11:03:18
言語 C#(csc)
(csc 3.9.0)
結果
RE  
実行時間 -
コード長 2,432 bytes
コンパイル時間 1,058 ms
コンパイル使用メモリ 110,604 KB
実行使用メモリ 25,832 KB
最終ジャッジ日時 2024-05-08 11:38:02
合計ジャッジ時間 2,670 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
testcase_24 RE -
testcase_25 RE -
testcase_26 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
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.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Globalization;
using static System.Console;
using Pair = System.Collections.Generic.KeyValuePair<int, int>;

class Program
{
    static void Main()
    {
        //var sw = new StreamWriter(OpenStandardOutput()) { AutoFlush = false };
        //SetOut(sw);
        new Program().solve();
        //Out.Flush();
    }
    Scanner cin = new Scanner();
    readonly int[] dd = { 0, 1, 0, -1, 0 };
    readonly int mod = 1000000007;
    readonly string alfa = "abcdefghijklmnopqrstuvwxyz";

	class Node 
	{
		public long op, sum;
		public int cnt;
		public Node(long a, long b, int c)
		{
			op = a;
			sum = b;
			cnt = c;
		}
	}
	int n, x, y;
	int ans = int.MaxValue;
    void solve()
    {
       n = cin.nextint;
       var d = cin.scanint;
       x = cin.nextint;
       y = cin.nextint;
       
       var G = new List<Node>();
       G.Add(new Node(0,0,0));
       
       foreach(var v in d)
       {
       		foreach(var g in G)
       		{
       			G.Add(new Node(g.op+v,g.sum+v,g.cnt+1));
       			G.Add(new Node(g.op-v,g.sum+v,g.cnt+1));
       		}
       }
       
       foreach(var g in G)
       {
       	
       		if(g.op == (long)x && g.sum >= Math.Abs(y))
       		{
       			ans = Math.Min(ans, g.cnt);
       		}
       		if(g.op == (long)y && g.sum >= Math.Abs(x))
       		{
       			ans = Math.Min(ans, g.cnt);
       		}
       }
       WriteLine(ans);
    }

}

class Scanner
{
    string[] s; int i;
    char[] cs = new char[] { ' ' };
    public Scanner(){ s = new string[0]; i = 0;}
    public string[] scan { get { return ReadLine().Split(); } }
    public int[] scanint { get { return Array.ConvertAll(scan, int.Parse); } }
    public long[] scanlong { get { return Array.ConvertAll(scan, long.Parse); } }
    public double[] scandouble { get { return Array.ConvertAll(scan, double.Parse); } }
    public string next
    {   get
        {
            if (i < s.Length) return s[i++];
            string st = ReadLine();
            while (st == "") st = ReadLine();
            s = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
            i = 0;
            return next;
        }
    }
    public int nextint { get { return int.Parse(next); } }
    public long nextlong { get { return long.Parse(next); } }
    public double nextdouble { get { return double.Parse(next); } }
}
0