結果

問題 No.437 cwwゲーム
ユーザー jousenjousen
提出日時 2016-10-28 23:57:37
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 3,544 bytes
コンパイル時間 1,374 ms
コンパイル使用メモリ 108,288 KB
実行使用メモリ 19,200 KB
最終ジャッジ日時 2024-05-03 08:21:46
合計ジャッジ時間 3,278 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
19,200 KB
testcase_01 AC 29 ms
18,944 KB
testcase_02 AC 31 ms
19,072 KB
testcase_03 AC 29 ms
18,944 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 AC 29 ms
19,200 KB
testcase_12 AC 29 ms
19,072 KB
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 AC 33 ms
19,072 KB
testcase_17 AC 31 ms
19,072 KB
testcase_18 WA -
testcase_19 AC 32 ms
18,944 KB
testcase_20 AC 32 ms
18,944 KB
testcase_21 AC 31 ms
18,944 KB
testcase_22 AC 31 ms
18,816 KB
testcase_23 AC 33 ms
19,072 KB
testcase_24 AC 32 ms
19,072 KB
testcase_25 WA -
testcase_26 WA -
testcase_27 AC 31 ms
18,944 KB
testcase_28 AC 32 ms
19,072 KB
testcase_29 AC 32 ms
19,200 KB
testcase_30 AC 29 ms
18,816 KB
testcase_31 AC 31 ms
19,072 KB
testcase_32 AC 31 ms
18,944 KB
testcase_33 WA -
testcase_34 AC 32 ms
19,072 KB
testcase_35 AC 30 ms
19,072 KB
testcase_36 AC 29 ms
18,944 KB
testcase_37 AC 31 ms
18,944 KB
testcase_38 AC 31 ms
18,944 KB
testcase_39 AC 29 ms
18,816 KB
testcase_40 AC 30 ms
18,816 KB
testcase_41 WA -
testcase_42 WA -
testcase_43 AC 31 ms
18,944 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.Collections;
using System.Linq;




namespace contest
{

    class contest
    {


        static void Main(string[] args)
        {


            //int n = int.Parse(Console.ReadLine());
            //var input = Console.ReadLine().Split().Select(int.Parse).ToArray();




            //var n = int.Parse(Console.ReadLine());
            //var input = Console.ReadLine().Split().Select(int.Parse).ToArray();


            long n = long.Parse(Console.ReadLine());

            long score = 0;

            var ch = new int[n.ToString().Length];
            var memo = new int[10];
            for(int i =0; i<n.ToString().Length; i++)
            {
                int tmp = (char)(n.ToString()[i]-'0');
                memo[tmp]++;
                ch[i] = memo[tmp];
            }


            var arr = n.ToString().ToArray();
            var list = new List<int>();
            var check = new bool[n.ToString().Length];
            for(int i = 9; i>=0; i--)
            {
                if ( memo[i]==0) continue;
                int tmp = 0;
                int target = i;
                if(target>0  )
                {
                    var mm = new int[3];
                    tmp += target;
                    
                    int ind = Array.IndexOf(arr,(char)(target+'0'));
                    if (check[ind]) continue;
                    var cp = arr.Skip(ind+1).Take(arr.Length - (ind + 1)).OrderByDescending(a => a).ToArray();
                    int cc = -1;
                    for(int k =0; k<cp.Length-1; k++)
                    {
                        int aa = cp[k] - '0';
                        if(target != aa && aa==cp[k+1]-'0' && memo[aa]>1)
                        {
                            cc = aa;
                            break;
                        }
                    }
                    if (cc < 0) continue;

                    mm[2] = ind;
                    //check[ind] = true;
                    for (int j = ind; j < arr.Length; j++)
                    {
                        int cur = arr[j]-'0';
                        if (cc != cur) continue;
                        if (!check[j]&&target!=cur && memo[cur] > 1 && ch[j] < memo[cur] && tmp.ToString().Length == 1)
                        {
                            tmp *= 10;
                            tmp += cur;
                            mm[0] = j;
                            //check[j] = true;
                        }
                        else if (!check[j]&& target!=cur&& tmp%10==cur&&memo[cur] > 1 && ch[j] <= memo[cur] && tmp.ToString().Length == 2)
                        {
                            tmp *= 10;
                            tmp += cur;
                            mm[1] = j;
                            //check[j] = true;
                        }

                        if (tmp.ToString().Length == 3) break;
                    }
                    if(tmp.ToString().Length==3)
                    {
                        list.Add(tmp);
                        check[mm[0]] = true;
                        check[mm[1]] = true;
                        check[mm[2]] = true;
                        memo[tmp/100]--;
                        memo[(tmp/10)%10]--;
                        memo[tmp%10]--;
                    }
                }
            }



            Console.WriteLine(list.Sum());


           



            //Console.WriteLine(score);


            //Console.Read();


        }

    }


}
0