結果

問題 No.297 カードの数式
ユーザー AreTrashAreTrash
提出日時 2016-05-03 23:45:38
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 2,119 bytes
コンパイル時間 894 ms
コンパイル使用メモリ 114,144 KB
実行使用メモリ 27,084 KB
最終ジャッジ日時 2024-10-05 06:08:34
合計ジャッジ時間 2,651 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 28 ms
18,816 KB
testcase_01 AC 26 ms
18,816 KB
testcase_02 AC 25 ms
18,816 KB
testcase_03 AC 26 ms
18,944 KB
testcase_04 AC 25 ms
18,688 KB
testcase_05 AC 26 ms
18,944 KB
testcase_06 AC 26 ms
18,688 KB
testcase_07 AC 26 ms
18,944 KB
testcase_08 AC 26 ms
18,688 KB
testcase_09 AC 25 ms
19,072 KB
testcase_10 AC 26 ms
18,816 KB
testcase_11 AC 25 ms
18,816 KB
testcase_12 AC 26 ms
18,816 KB
testcase_13 AC 25 ms
18,560 KB
testcase_14 WA -
testcase_15 AC 26 ms
18,816 KB
testcase_16 WA -
testcase_17 WA -
testcase_18 AC 28 ms
18,816 KB
testcase_19 AC 28 ms
18,816 KB
testcase_20 AC 28 ms
18,816 KB
testcase_21 AC 28 ms
18,560 KB
testcase_22 AC 26 ms
18,944 KB
testcase_23 AC 28 ms
18,944 KB
testcase_24 AC 27 ms
18,816 KB
testcase_25 AC 28 ms
18,560 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
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;

namespace No297_1{
    public class Program{
        public static void Main(string[] args){
            Console.ReadLine();
            var cards = Console.ReadLine().Split(' ');

            var nums = new int[10];
            var ops = new int[2];

            foreach(var card in cards){
                if(card.Equals("+"))
                    ops[0]++;
                else if(card.Equals("-"))
                    ops[1]++;
                else
                    nums[int.Parse(card)]++;
            }

            var numCnt = nums.Sum();
            var opCnt = ops.Sum();

            var addList = new List<long>();
            var subList = new List<long>();
            var tmps = new int[10];
            nums.CopyTo(tmps, 0);

            var add = 0L;
            for(var i = 0; i < numCnt - opCnt; i++){
                var index = Array.FindLastIndex(tmps, x => x >= 1);
                add = add * 10 + index;
                tmps[index]--;
            }
            addList.Add(add);

            for(var i = 0; i < ops[0]; i++){
                var index = Array.FindLastIndex(tmps, x => x >= 1);
                addList.Add(index);
                tmps[index]--;
            }

            for(var i = 0; i < ops[1]; i++){
                var index = Array.FindIndex(tmps, x => x >= 1);
                subList.Add(index);
                tmps[index]--;
            }
            Console.Write(addList.Sum() - subList.Sum() + " ");

            if(ops[1] > 0){
                Console.WriteLine(addList.Sum() - subList.Sum() - (addList.Max() - subList.Min()) * 2);
            } else{
                var addary = new long[opCnt + 1];
                var cnt = 0;
                for(var i = 0; i < numCnt; i++){
                    cnt = cnt < opCnt ? cnt + 1 : 0;
                    var index = Array.FindIndex(nums, x => x >= 1);
                    addary[cnt] = addary[cnt] * 10 + index;
                    nums[index]--;
                }
                Console.WriteLine(addary.Sum());
            }
        }
    }
}
0