Submission #22756


Source Code Expand

module main;

import std.algorithm; // この解答で使った項目: sort
import std.stdio; // この解答で使った項目: readln, writefln
import std.conv; // この解答で使った項目: to
import std.string; // この解答で使った項目: strip

void main()
{
    // キー の型が char (文字), 値の型が int (整数) の連想配列を定義
    int[char] answers;
    // char 型の変数 letter に 文字列 "1234" の要素 (文字 '1', '2', '3', '4') を順に割り当てるループ
    foreach (char letter; "1234")
    {
        // 正答の出現回数を 0 に初期化
        answers[letter] = 0;
    }

    // std.stdio.readln: 標準入力1行を読む (行末文字は残される)
    // std.string.strip: 前後の空白を削る (ここでは行末文字を削る)
    // std.conv.to: 文字列を int へ変換
    auto N = readln().strip().to!int();
    // 一応は入力としておくが、実は問題を解くのには使わない。

    string input = readln().strip();
    foreach (char letter; input)
    {
        // 正答の出現回数を数える
        answers[letter] += 1;
    }
    debug // デバッグの時に実行されるコード。試しにそれぞれの文字が正答になった回数を出力してみる。
    {
        // 連想配列にわたってループする。順番は連想配列の中で任意に決められてしまうので、1 から順番になるわけではない。
        foreach (char letter, int count; answers)
        {
            // std.writefln: 出力の形式を指定して出力する。
            // - "%c" に対応する char 型の変数に入っている文字を出力。
            // - "%d" に対応する整数 (int など) 型の変数に入っている数を文字列として出力。
            writefln("%c occurs %d time(s).", letter, count);
        }

        // 順番を決めたかったら キー を好きな順番に並べておいて、その順にループして連想配列へアクセスすればよい。
        foreach (char letter; "1234")
        {
            writefln("%c occurs %d time(s).", letter, answers[letter]);
        }
    } // コメントアウトなどしなくても、Submit すれば debug 部分は実行されない。

    // 連想配列 values プロパティ: 値のみを取り出す。
    // std.algorithm.sort: 配列を直接変更によって並び変え、しかも返す。
    // - 並び変える前のものに名前がついているなら、sort したら元の名前で使えばよい。
    // - 今は answers から取得した values を並び変えているので、返ってきた結果を変数に代入して使う。
    // - 型の名前は難しい (SortedRange!(なんとかかんとか)) ので auto にしておこう。
    // 各正答の出現回数を並び変える。小さいものから大きいものへ。
    auto counts = answers.values.sort();
    writefln("%d %d", counts[3], counts[0]);
}

// simple version: http://arc001.contest.atcoder.jp/submissions/22753

Submission Info

Submission Time
Task A - センター採点
User majiang
Language D (DMD 2.060)
Score 100
Code Size 3134 Byte
Status AC
Exec Time 24 ms
Memory 912 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 30
Set Name Test Cases
All 00_sample1.txt, 00_sample2.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 02_all_1.txt, 02_all_2.txt, 02_all_3.txt, 02_all_4.txt, 03_mini_1.txt, 03_mini_2.txt, 03_mini_3.txt, 03_mini_4.txt
Case Name Status Exec Time Memory
00_sample1.txt AC 20 ms 788 KB
00_sample2.txt AC 21 ms 792 KB
01_rnd_00.txt AC 21 ms 788 KB
01_rnd_01.txt AC 21 ms 788 KB
01_rnd_02.txt AC 20 ms 796 KB
01_rnd_03.txt AC 21 ms 756 KB
01_rnd_04.txt AC 21 ms 792 KB
01_rnd_05.txt AC 20 ms 796 KB
01_rnd_06.txt AC 21 ms 788 KB
01_rnd_07.txt AC 21 ms 792 KB
01_rnd_08.txt AC 20 ms 780 KB
01_rnd_09.txt AC 20 ms 796 KB
01_rnd_10.txt AC 21 ms 764 KB
01_rnd_11.txt AC 20 ms 792 KB
01_rnd_12.txt AC 24 ms 868 KB
01_rnd_13.txt AC 20 ms 792 KB
01_rnd_14.txt AC 20 ms 796 KB
01_rnd_15.txt AC 20 ms 784 KB
01_rnd_16.txt AC 20 ms 796 KB
01_rnd_17.txt AC 20 ms 792 KB
01_rnd_18.txt AC 20 ms 792 KB
01_rnd_19.txt AC 21 ms 764 KB
02_all_1.txt AC 21 ms 796 KB
02_all_2.txt AC 21 ms 912 KB
02_all_3.txt AC 21 ms 760 KB
02_all_4.txt AC 20 ms 800 KB
03_mini_1.txt AC 20 ms 788 KB
03_mini_2.txt AC 21 ms 796 KB
03_mini_3.txt AC 20 ms 812 KB
03_mini_4.txt AC 21 ms 784 KB