Submission #169350


Source Code Expand

import std.algorithm;
import std.array;
import std.bigint;
import std.container;
import std.conv;
import std.exception;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

import std.functional;

version = C;

T[] readlnSome(T)(){
    return array(readln().split().map!(a => to!T(a))());
}


T readlnOne(T)(){
    return to!T(readln().split()[0]);
}


void main()
{
  version(A)
  {
    auto ns = readlnSome!uint[0 .. 2];
    writeln(ns[1] - ns[0] + 1);
  }

  version(B)
  {
    uint[string] tb;
    foreach(i; 0 .. readlnOne!uint)
        tb[readlnOne!string] += 1;
    
    Tuple!(string, uint)[] arr;
    foreach(k, v; tb)
        arr ~= tuple(k, v);
    arr.sort!"a[1] > b[1]"();
    writeln(arr[0][0]);
  }

  version(C)
  {
    immutable N = readlnOne!uint;

    uint[] cn;
    foreach(i; 0 .. N)
        cn ~= readlnOne!uint;

    auto idx = iota(cn.length).array;

    uint calc(in size_t[] idx){
        bool[] tbl = new bool[idx.length];

        foreach(i, e; idx){
            if(i != idx.length - 1)
                foreach(j, a; idx[i+1 .. $])
                    if(cn[a] % cn[e] == 0)
                        tbl[j + i + 1] = !tbl[j + i + 1];
        }

        //writeln(tbl);

        return reduce!"a + !b"(0, tbl);
    }

    //writeln(cn);
    //writeln(idx);
    real sum = 0;
    uint cnt;
    do{
        sum += calc(idx);
        ++cnt;
        //writeln(idx);
    }while(nextPermutation(idx));

    //writeln(idx);
    writefln("%.6f", sum / cnt);
  }
}

bool nextPermutation(alias less="a<b", BidirectionalRange)
                    (ref BidirectionalRange range)
    if (isBidirectionalRange!BidirectionalRange &&
        hasSwappableElements!BidirectionalRange)
{
    // Ranges of 0 or 1 element have no distinct permutations.
    if (range.empty) return false;

    auto i = retro(range);
    auto last = i.save;

    // Find last occurring increasing pair of elements
    size_t n = 1;
    for (i.popFront(); !i.empty; i.popFront(), last.popFront(), n++)
    {
        if (binaryFun!less(i.front, last.front))
            break;
    }

    if (i.empty) {
        // Entire range is decreasing: it's lexicographically the greatest. So
        // wrap it around.
        range.reverse();
        return false;
    }

    // Find last element greater than i.front.
    auto j = find!((a) => binaryFun!less(i.front, a))(
                   takeExactly(retro(range), n));

    assert(!j.empty);   // shouldn't happen since i.front < last.front
    swap(i.front, j.front);
    reverse(takeExactly(retro(range), n));

    return true;
}

Submission Info

Submission Time
Task C - コイン
User k3kaimu
Language D (DMD 2.060)
Score 99
Code Size 2725 Byte
Status TLE
Exec Time 2037 ms
Memory 1956 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 99 / 99 0 / 1
Status
AC × 3
AC × 20
AC × 20
TLE × 20
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt
Subtask2 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt
Case Name Status Exec Time Memory
sample_01.txt AC 22 ms 828 KB
sample_02.txt AC 58 ms 928 KB
sample_03.txt AC 23 ms 748 KB
subtask1_01.txt AC 26 ms 732 KB
subtask1_02.txt AC 24 ms 840 KB
subtask1_03.txt AC 21 ms 924 KB
subtask1_04.txt AC 68 ms 1444 KB
subtask1_05.txt AC 81 ms 1428 KB
subtask1_06.txt AC 66 ms 1044 KB
subtask1_07.txt AC 87 ms 1364 KB
subtask1_08.txt AC 23 ms 924 KB
subtask1_09.txt AC 28 ms 924 KB
subtask1_10.txt AC 67 ms 1448 KB
subtask1_11.txt AC 24 ms 808 KB
subtask1_12.txt AC 63 ms 1436 KB
subtask1_13.txt AC 23 ms 924 KB
subtask1_14.txt AC 27 ms 928 KB
subtask1_15.txt AC 71 ms 1440 KB
subtask1_16.txt AC 83 ms 1372 KB
subtask1_17.txt AC 72 ms 1376 KB
subtask1_18.txt AC 72 ms 1568 KB
subtask1_19.txt AC 69 ms 1444 KB
subtask1_20.txt AC 72 ms 1444 KB
subtask2_01.txt TLE 2029 ms 1948 KB
subtask2_02.txt TLE 2031 ms 1956 KB
subtask2_03.txt TLE 2031 ms 1896 KB
subtask2_04.txt TLE 2030 ms 1956 KB
subtask2_05.txt TLE 2032 ms 1948 KB
subtask2_06.txt TLE 2030 ms 1956 KB
subtask2_07.txt TLE 2031 ms 1956 KB
subtask2_08.txt TLE 2037 ms 1944 KB
subtask2_09.txt TLE 2031 ms 1952 KB
subtask2_10.txt TLE 2030 ms 1956 KB
subtask2_11.txt TLE 2029 ms 1952 KB
subtask2_12.txt TLE 2032 ms 1936 KB
subtask2_13.txt TLE 2031 ms 1952 KB
subtask2_14.txt TLE 2034 ms 1952 KB
subtask2_15.txt TLE 2030 ms 1952 KB
subtask2_16.txt TLE 2033 ms 1956 KB
subtask2_17.txt TLE 2030 ms 1940 KB
subtask2_18.txt TLE 2031 ms 1952 KB
subtask2_19.txt TLE 2030 ms 1888 KB
subtask2_20.txt TLE 2030 ms 1880 KB