Submission #994874


Source Code Expand

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
//using System.Numerics;  //comment out if AOJ
using System.Text;

using Problem = Tmp.Problem;
using MyIO;
using static Func;

#pragma warning disable   //for AOJ

namespace Tmp
{

    class Problem : IDisposable
    {
        bool IsGCJ;
        int Repeat;
        Scanner sc;
        Printer pr;
        public Problem(bool isGCJ, Scanner scanner, Printer printer)
        {
            sc = scanner;
            pr = printer;
            IsGCJ = isGCJ;
            if (isGCJ) Repeat = sc.nextInt();
            else Read();
        }
        public Problem(bool isGCJ) : this(isGCJ, new Scanner(), new Printer()) { }
        public Problem(bool isGCJ, Scanner scanner) : this(isGCJ, scanner, new Printer()) { }
        public Problem(bool isGCJ, Printer printer) : this(isGCJ, new Scanner(), printer) { }
        public void Solve()
        {
            if (IsGCJ) for (var i = 0; i < Repeat; i++) { Read(); pr.Write("Case #" + (i + 1) + ": "); SolveOne(); }
            else SolveOne();
        }
        public void Dispose()
        {
            sc.Dispose();
            pr.Dispose();
        }
        public int Size { get { return 1; } }
        public const long Mod = 1000000007;

        // 使用する変数をここに書く
        // string S;
        // int a;
        /// <summary>
        /// 読み込み処理をここに書く
        /// </summary>
        void Read()
        {

        }
        /// <summary>
        /// メイン処理をここに書く
        /// </summary>
        void SolveOne()
        {
            long n = sc.nextLong();
            long a = sc.nextLong();
//            var fac = Func.Factorize(n);
            long ans = n;
            long[] dp = new long[n/a+5];
            for (int i = 2; i < dp.Length; i++)
            {
                dp[i] = i + a;
            }
            for (int i = 2; i < dp.Length; i++)
            {
                for (int j = i * 2; j < dp.Length; j += i)
                {
                    dp[j] = Math.Min(dp[j], dp[i] + j / i + a);
                }
            }
            for (int i = 1; i < dp.Length; i++)
            {
                ans = Math.Min(ans, dp[i] + (n - 1) / i + 1);
            }
            Console.WriteLine(ans);
        }
    }
}
class Program
{
    //public static RandomSFMT rand = new RandomSFMT();
    public static bool IsJudgeMode = true;
    public static bool IsGCJMode = false;
    public static bool IsSolveCreated = true;
    static void Main()
    {
        if (IsJudgeMode)
            if (IsGCJMode) using (var problem = new Problem(true, new Scanner("C-large-practice.in.txt"), new Printer("output.txt"))) problem.Solve();
            else using (var problem = new Problem(false, new Printer())) problem.Solve();
        else
        {
            var num = 1;
            int size = 0;
            decimal time = 0;
            for (var tmp = 0; tmp < num; tmp++)
            {
                using (var P = IsSolveCreated ? new Problem(false, new Scanner("input.txt"), new Printer()) : new Problem(false))
                {
                    size = P.Size;
                    //time += Func.MeasureTime(() => P.Solve());
                }
            }
            Console.WriteLine("{0}, {1}ms", size, time / num);
        }
    }
}

/// <summary>
/// カスタマイズしたIO
/// </summary>
namespace MyIO
{
    class Printer : IDisposable
    {
        bool isConsole;
        TextWriter file;
        public Printer() { file = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; isConsole = true; }
        public Printer(string path) { file = new StreamWriter(path, false) { AutoFlush = false }; isConsole = false; }
        public void Write<T>(T value) { file.Write(value); }
        public void Write(bool b) { file.Write(b ? "YES" : "NO"); }
        public void Write(string str, params object[] args) { file.Write(str, args); }
        public void WriteLine() { file.WriteLine(); }
        public void WriteLine<T>(T value) { file.WriteLine(value); }
        public void WriteLine(bool b) { file.WriteLine(b ? "YES" : "NO"); }
        public void WriteLine<T>(IEnumerable<T> list) { foreach (var x in list) file.WriteLine(x); }
        public void WriteLine<T>(List<T> list) { foreach (var x in list) file.WriteLine(x); }
        public void WriteLine<T>(T[] list) { foreach (var x in list) file.WriteLine(x); }
        public void WriteLine(string str, params object[] args) { file.WriteLine(str, args); }
        public void Dispose() { file.Flush(); if (!isConsole) file.Dispose(); }
    }
    class Scanner : IDisposable
    {
        bool isConsole;
        TextReader file;
        public Scanner() { file = Console.In; }
        public Scanner(string path) { file = new StreamReader(path); isConsole = false; }
        public void Dispose() { if (!isConsole) file.Dispose(); }

        #region next読み込み
        string[] nextBuffer = new string[0];
        int BufferCnt = 0;

        char[] cs = new char[] { ' ' };

        public string next()
        {
            while (BufferCnt >= nextBuffer.Length)
            {
                string st = file.ReadLine();
                while (st == "") st = file.ReadLine();
                nextBuffer = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
                BufferCnt = 0;
            }
            return nextBuffer[BufferCnt++];
        }

        public int nextInt()
        {
            return int.Parse(next());
        }

        public long nextLong()
        {
            return long.Parse(next());
        }

        public double nextDouble()
        {
            return double.Parse(next());
        }

        private T[] enumerate<T>(int n, Func<T> f)
        {
            var a = new T[n];
            for (int i = 0; i < n; ++i) a[i] = f();
            return a;
        }

        public string[] next(int n) { return enumerate(n, next); }
        public double[] nextDouble(int n) { return enumerate(n, nextDouble); }
        public int[] nextInt(int n) { return enumerate(n, nextInt); }
        public long[] nextLong(int n) { return enumerate(n, nextLong); }
        #endregion
    }
}
static class Func
{
    public static Dictionary<long, int> Factorize(this long n)
    {
        var d = new Dictionary<long, int>();
        for (var i = 2L; i * i <= n; i++)
            if (n % i == 0)
            {
                d.Add(i, 0);
                while (n % i == 0) { n /= i; d[i]++; }
            }
        if (n > 1) d.Add(n, 1);
        return d;
    }
}

Submission Info

Submission Time
Task E - Cookies
User yu3mars
Language C# (Mono 4.6.2.0)
Score 0
Code Size 6886 Byte
Status WA
Exec Time 2190 ms
Memory 1764448 KB

Judge Result

Set Name sample dataset1 dataset2
Score / Max Score 0 / 0 0 / 500 0 / 500
Status
AC × 3
AC × 14
WA × 5
RE × 8
AC × 18
WA × 9
TLE × 4
RE × 38
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
dataset1 sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt
dataset2 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 02-26.txt, 02-27.txt, 02-28.txt, 02-29.txt, 02-30.txt, 02-31.txt, 02-32.txt, 02-33.txt, 02-34.txt, 02-35.txt, 02-36.txt, 02-37.txt, 02-38.txt, 02-39.txt, 02-40.txt
Case Name Status Exec Time Memory
01-01.txt RE 22 ms 2656 KB
01-02.txt AC 110 ms 10456 KB
01-03.txt AC 63 ms 6616 KB
01-04.txt AC 47 ms 5208 KB
01-05.txt AC 39 ms 4696 KB
01-06.txt AC 35 ms 4312 KB
01-07.txt AC 28 ms 3544 KB
01-08.txt WA 24 ms 3160 KB
01-09.txt WA 22 ms 2904 KB
01-10.txt WA 21 ms 2776 KB
01-11.txt WA 21 ms 2776 KB
01-12.txt WA 21 ms 2648 KB
01-13.txt AC 21 ms 2648 KB
01-14.txt AC 22 ms 2904 KB
01-15.txt RE 22 ms 2528 KB
01-16.txt AC 64 ms 6744 KB
01-17.txt AC 28 ms 3544 KB
01-18.txt AC 21 ms 2648 KB
01-19.txt AC 21 ms 2648 KB
01-20.txt RE 21 ms 2528 KB
01-21.txt AC 21 ms 2648 KB
01-22.txt RE 21 ms 2400 KB
01-23.txt RE 21 ms 2400 KB
01-24.txt RE 21 ms 2528 KB
01-25.txt RE 21 ms 2528 KB
01-26.txt RE 21 ms 2528 KB
02-01.txt AC 21 ms 2648 KB
02-02.txt RE 21 ms 2400 KB
02-03.txt RE 21 ms 2400 KB
02-04.txt RE 21 ms 2400 KB
02-05.txt RE 21 ms 2400 KB
02-06.txt RE 21 ms 2400 KB
02-07.txt RE 21 ms 2528 KB
02-08.txt RE 21 ms 2400 KB
02-09.txt RE 21 ms 2400 KB
02-10.txt RE 21 ms 2400 KB
02-11.txt RE 21 ms 2528 KB
02-12.txt RE 21 ms 2400 KB
02-13.txt RE 22 ms 2528 KB
02-14.txt RE 21 ms 2528 KB
02-15.txt RE 21 ms 2528 KB
02-16.txt RE 21 ms 2528 KB
02-17.txt RE 21 ms 2528 KB
02-18.txt RE 22 ms 2400 KB
02-19.txt RE 21 ms 2400 KB
02-20.txt TLE 2190 ms 1764448 KB
02-21.txt TLE 2118 ms 302688 KB
02-22.txt WA 63 ms 6616 KB
02-23.txt WA 21 ms 2648 KB
02-24.txt AC 20 ms 2648 KB
02-25.txt TLE 2107 ms 98656 KB
02-26.txt RE 21 ms 2528 KB
02-27.txt RE 21 ms 2528 KB
02-28.txt RE 21 ms 2528 KB
02-29.txt RE 21 ms 2528 KB
02-30.txt RE 21 ms 2400 KB
02-31.txt RE 21 ms 2528 KB
02-32.txt RE 21 ms 2528 KB
02-33.txt RE 21 ms 2400 KB
02-34.txt RE 21 ms 2528 KB
02-35.txt RE 21 ms 2400 KB
02-36.txt RE 21 ms 2528 KB
02-37.txt RE 21 ms 2400 KB
02-38.txt TLE 2183 ms 1639776 KB
02-39.txt WA 130 ms 11992 KB
02-40.txt WA 38 ms 4568 KB
sample-01.txt AC 21 ms 2648 KB
sample-02.txt AC 21 ms 2648 KB
sample-03.txt AC 22 ms 2776 KB