結果
| 問題 | No.4 おもりと天秤 | 
| コンテスト | |
| ユーザー |  しらゆき | 
| 提出日時 | 2016-01-11 10:34:09 | 
| 言語 | C#(csc) (csc 3.9.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 31 ms / 5,000 ms | 
| コード長 | 2,266 bytes | 
| コンパイル時間 | 1,866 ms | 
| コンパイル使用メモリ | 112,396 KB | 
| 実行使用メモリ | 19,328 KB | 
| 最終ジャッジ日時 | 2024-06-26 09:22:57 | 
| 合計ジャッジ時間 | 2,443 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 23 | 
コンパイルメッセージ
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.Collections.Generic;
class Program
{    
    static void Main()
    {
        var n = ri();
        var w = ria();
        string ans = "impossible";
        var dp = new bool[n * 50 + 1];
        dp[0] = true;
        for (int i = 0; i < n; i++)
            for (int j = n * 50; j >= 0; j--)
                if (dp[j] && j + w[i] < n * 50 + 1)
                    dp[j + w[i]] = true;
        if (dp[w.Sum() / 2]) ans = "possible";
        if (w.Sum() % 2 == 1) ans = "impossible";
        Console.WriteLine(ans);
    }
    #region Scan
    static int ri() { return int.Parse(Console.ReadLine().Trim()); }
    static long rl() { return long.Parse(Console.ReadLine().Trim()); }
    static double rd() { return double.Parse(Console.ReadLine().Trim()); }
    static string rs() { return Console.ReadLine().Trim(); }
    static int[] ria() { return Console.ReadLine().Trim().Split().Select(int.Parse).ToArray(); }
    static long[] rla() { return Console.ReadLine().Trim().Split().Select(long.Parse).ToArray(); }
    static double[] rda() { return Console.ReadLine().Trim().Split().Select(double.Parse).ToArray(); }
    static string[] rsa() { return Console.ReadLine().Trim().Split(); }
    static void mul(out int a, out int b) { var arr = ria(); a = arr[0]; b = arr[1]; }
    static void mul(out int a, out int b, out int c) { var arr = ria(); a = arr[0]; b = arr[1]; c = arr[2]; }
    static void mul(out int a, out int b, out int c, out int d) { var arr = ria(); a = arr[0]; b = arr[1]; c = arr[2]; d = arr[3]; }
    static void mul(out long a, out long b) { var arr = rla(); a = arr[0]; b = arr[1]; }
    static void mul(out long a, out long b, out long c) { var arr = rla(); a = arr[0]; b = arr[1]; c = arr[2]; }
    static void mul(out long a, out long b, out long c, out long d) { var arr = rla(); a = arr[0]; b = arr[1]; c = arr[2]; d = arr[3]; }
    #endregion
    #region Math
    const int mod = 1000000007;
    static bool isprime(long n){ if (n < 2) return false; for (long i = 2; i * i <= n; i++) if (n % i == 0) return false; return true; }
    static long gcd(long a, long b) { return a == 0 ? b : gcd(b % a, a); }
    static long lcm(long a, long b) { return a * b / gcd(a, b); }
    #endregion
}
            
            
            
        