Submission #27854595


Source Code Expand

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;

namespace Tasks
{
    public class E
    {
        public static void Main(string[] args)
        {
            var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            Console.SetOut(sw);
            Solve();
            Console.Out.Flush();
        }

        public static void Solve()
        {
            var (N, X) = Scanner.Scan<int, long>();
            var A = Scanner.ScanEnumerable<long>().ToArray();

            const long inf = (long)1e18;
            var dp1 = new Dictionary<long, long>();
            dp1[X] = 0;
            for (var i = N - 1; i >= 0; i--)
            {
                var dp2 = new Dictionary<long, long>();
                foreach (var (x, c) in dp1)
                {
                    var ceil = (x + A[i] - 1) / A[i];
                    var a = Math.Abs(x - ceil * A[i]);
                    if (!dp2.ContainsKey(a)) dp2[a] = inf;
                    dp2[a] = Math.Min(dp2[a], c + ceil);

                    var floor = x / A[i];
                    var b = Math.Abs(x - floor * A[i]);
                    if (!dp2.ContainsKey(b)) dp2[b] = inf;
                    dp2[b] = Math.Min(dp2[b], c + floor);
                }

                dp1 = dp2;
            }

            var answer = dp1[0];
            Console.WriteLine(answer);
        }

        public static class Scanner
        {
            public static T Scan<T>() where T : IConvertible => Convert<T>(ScanLine()[0]);
            public static (T1, T2) Scan<T1, T2>() where T1 : IConvertible where T2 : IConvertible
            {
                var line = ScanLine();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]));
            }
            public static (T1, T2, T3) Scan<T1, T2, T3>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible
            {
                var line = ScanLine();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]));
            }
            public static (T1, T2, T3, T4) Scan<T1, T2, T3, T4>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible
            {
                var line = ScanLine();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]));
            }
            public static (T1, T2, T3, T4, T5) Scan<T1, T2, T3, T4, T5>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible
            {
                var line = ScanLine();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]), Convert<T5>(line[4]));
            }
            public static (T1, T2, T3, T4, T5, T6) Scan<T1, T2, T3, T4, T5, T6>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible where T6 : IConvertible
            {
                var line = ScanLine();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]), Convert<T5>(line[4]), Convert<T6>(line[5]));
            }
            public static IEnumerable<T> ScanEnumerable<T>() where T : IConvertible => ScanLine().Select(Convert<T>);
            private static T Convert<T>(string value) where T : IConvertible => (T)System.Convert.ChangeType(value, typeof(T));
            private static string[] ScanLine() => Console.ReadLine()?.Trim().Split(' ') ?? Array.Empty<string>();
        }
    }
}

Submission Info

Submission Time
Task E - Minimal payments
User AconCavy
Language C# (.NET Core 3.1.201)
Score 500
Code Size 3770 Byte
Status AC
Exec Time 103 ms
Memory 28316 KiB

Judge Result

Set Name Sample All after_contest
Score / Max Score 0 / 0 500 / 500 0 / 0
Status
AC × 3
AC × 34
AC × 1
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, sample_01.txt, sample_02.txt, sample_03.txt
after_contest after_contest_01.txt
Case Name Status Exec Time Memory
after_contest_01.txt AC 86 ms 28312 KiB
hand_01.txt AC 86 ms 27884 KiB
hand_02.txt AC 88 ms 27888 KiB
hand_03.txt AC 87 ms 27964 KiB
hand_04.txt AC 82 ms 28264 KiB
random_01.txt AC 88 ms 27972 KiB
random_02.txt AC 86 ms 28316 KiB
random_03.txt AC 87 ms 28200 KiB
random_04.txt AC 88 ms 27908 KiB
random_05.txt AC 88 ms 27780 KiB
random_06.txt AC 89 ms 28264 KiB
random_07.txt AC 83 ms 27944 KiB
random_08.txt AC 83 ms 27784 KiB
random_09.txt AC 89 ms 27768 KiB
random_10.txt AC 103 ms 27980 KiB
random_11.txt AC 91 ms 27772 KiB
random_12.txt AC 88 ms 27912 KiB
random_13.txt AC 84 ms 28036 KiB
random_14.txt AC 83 ms 28196 KiB
random_15.txt AC 88 ms 28116 KiB
random_16.txt AC 87 ms 28024 KiB
random_17.txt AC 92 ms 27936 KiB
random_18.txt AC 91 ms 27904 KiB
random_19.txt AC 85 ms 28308 KiB
random_20.txt AC 88 ms 28008 KiB
random_21.txt AC 87 ms 27992 KiB
random_22.txt AC 87 ms 27852 KiB
random_23.txt AC 83 ms 27976 KiB
random_24.txt AC 92 ms 27992 KiB
random_25.txt AC 87 ms 27892 KiB
random_26.txt AC 79 ms 27920 KiB
random_27.txt AC 86 ms 27760 KiB
sample_01.txt AC 80 ms 27984 KiB
sample_02.txt AC 87 ms 27984 KiB
sample_03.txt AC 88 ms 27992 KiB