結果
| 問題 | No.5003 物理好きクリッカー | 
| コンテスト | |
| ユーザー |  vis103 | 
| 提出日時 | 2018-12-11 11:47:43 | 
| 言語 | C#(csc) (csc 3.9.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 427 ms / 10,000 ms | 
| コード長 | 22,996 bytes | 
| コンパイル時間 | 856 ms | 
| 実行使用メモリ | 34,116 KB | 
| スコア | 5,922,262 | 
| 平均クエリ数 | 10000.00 | 
| 最終ジャッジ日時 | 2021-07-19 09:21:27 | 
| 合計ジャッジ時間 | 16,234 ms | 
| ジャッジサーバーID (参考情報) | judge11 / judge10 | 
| 純コード判定しない問題か言語 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 32 | 
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.6.0-4.20224.5 (ec77c100) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static Equipment[] eq = new Equipment[5];
    static int nowTurn = 0;
    static int SevenTimesTurn = 0;
    static string SpecialFactor;
    static void Main(string[] args)
    {
        int Turn = int.Parse(Console.ReadLine());
        SpecialFactor = Console.ReadLine();
        
        eq[0] = new Equipment();
        eq[0].Name = "hand";
        eq[0].Buy = 150;
        eq[0].Product = 1;
        eq[0].Reinforce = 1500;
        eq[1] = new Equipment();
        eq[1].Name = "lily";
        eq[1].Buy = 2000;
        eq[1].Product = 10;
        eq[1].Reinforce = 20000;
        eq[2] = new Equipment();
        eq[2].Name = "factory";
        eq[2].Buy = 30000;
        eq[2].Product = 120;
        eq[2].Reinforce = 300000;
        eq[3] = new Equipment();
        eq[3].Name = "casino";
        eq[3].Buy = 600000;
        eq[3].Product = 2000;
        eq[3].Reinforce = 6000000;
        eq[4] = new Equipment();
        eq[4].Name = "grimoire";
        eq[4].Buy = 10000000;
        eq[4].Product = 25000;
        eq[4].Reinforce = 100000000;
        
        int Cookies = 0;
        bool buyHandflg = false;
        for(; nowTurn < Turn || nowTurn < 200; nowTurn++)
        {
            if (SpecialFactor.Substring(nowTurn, 1) == "F")
            {
                SevenTimesTurn = 21;
            }
            if (((Cookies >= 14 && SpecialFactor.Substring(nowTurn, 1) == "S") || Cookies >= 15) && !buyHandflg)
            {
                Console.WriteLine("enhclick");
                Console.ReadLine();
                if (SpecialFactor.Substring(nowTurn, 1) == "S")
                {
                    Cookies -= 14;
                }
                else
                {
                    Cookies -= 15;
                }
                buyHandflg = true;
                continue;
            }
            else if (Cookies >= eq[0].Buy || (Cookies >= (int)Math.Ceiling(eq[0].Buy * 0.9) && SpecialFactor.Substring(nowTurn, 1)== "S"))
            {
                Console.WriteLine("buy hand");
                Console.ReadLine();
                if (SpecialFactor.Substring(nowTurn, 1) == "S")
                {
                    Cookies -= (int)Math.Ceiling(eq[0].Buy * 0.9);
                }
                else
                {
                    Cookies -= eq[0].Buy;
                }
                eq[0].Buy = (int)Math.Ceiling((double)eq[0].Buy * 1.2);
                eq[0].Count++;
                continue;
            }
            else
            {
                Console.WriteLine("click");
                Console.ReadLine();
                if(buyHandflg)
                {
                    Cookies++;
                    Cookies++;
                }
                else
                {
                    Cookies++;
                }
                continue;
            }
            if (SpecialFactor.Substring(nowTurn, 1) == "B")
            {
                Cookies += (int)Math.Floor(Cookies * 0.01);
            }
            Cookies += GetProducts();
        }
        for (; nowTurn < Turn; nowTurn++)
        {
            try
            {
                if (SpecialFactor.Substring(nowTurn, 1) == "F")
                {
                    SevenTimesTurn = 21;
                }
                // 最後のsell判断
                if (eq[0].Count + eq[1].Count + eq[2].Count + eq[3].Count + eq[4].Count >= Turn - nowTurn)
                {
                    if (0 < eq[0].Count)
                    {
                        Console.WriteLine("sell " + eq[0].Name);
                        Console.ReadLine();
                        continue;
                    }
                    else if (0 < eq[1].Count)
                    {
                        Console.WriteLine("sell " + eq[1].Name);
                        Console.ReadLine();
                        continue;
                    }
                    else if (0 < eq[2].Count)
                    {
                        Console.WriteLine("sell " + eq[2].Name);
                        Console.ReadLine();
                        continue;
                    }
                    else if (0 < eq[3].Count)
                    {
                        Console.WriteLine("sell " + eq[3].Name);
                        Console.ReadLine();
                        continue;
                    }
                    else if (0 < eq[4].Count)
                    {
                        Console.WriteLine("sell " + eq[4].Name);
                        Console.ReadLine();
                        continue;
                    }
                }
                else if (eq[0].Count + eq[1].Count + eq[2].Count + eq[3].Count + eq[4].Count >= Turn - nowTurn - 200)
                {
                    // 後半買わないでクリック
                    Console.WriteLine("click");
                    Console.ReadLine();
                    continue;
                }
                if (eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[0].Product / eq[0].Buy &&
                   eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[0].Product / eq[0].Buy &&
                   eq[1].Product / eq[1].Buy <= eq[0].Product / eq[0].Buy &&
                   eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[0].Product / eq[0].Buy &&
                   eq[2].Product / eq[2].Buy <= eq[0].Product / eq[0].Buy &&
                   eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[0].Product / eq[0].Buy &&
                   eq[3].Product / eq[3].Buy <= eq[0].Product / eq[0].Buy &&
                   eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[0].Product / eq[0].Buy &&
                   eq[4].Product / eq[4].Buy <= eq[0].Product / eq[0].Buy &&
                   eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[0].Product / eq[0].Buy &&
                   (eq[0].Buy <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[0].Buy * 0.9) <= Cookies))
                {
                    Console.WriteLine("buy " + eq[0].Name);
                    Console.ReadLine();
                    if(SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[0].Buy * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[0].Buy;
                    }
                    eq[0].Buy = (int)Math.Ceiling((double)eq[0].Buy * 1.2);
                    eq[0].Count++;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[1].Product / eq[1].Buy <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[2].Product / eq[2].Buy <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[3].Product / eq[3].Buy <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[4].Product / eq[4].Buy <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[0].Count * eq[0].Product / eq[0].Reinforce &&
                         (eq[0].Reinforce <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[0].Reinforce * 0.9) <= Cookies))
                {
                    Console.WriteLine("reinforce " + eq[0].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[0].Reinforce * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[0].Reinforce;
                    }
                    eq[0].Reinforce = eq[0].Reinforce * 10;
                    eq[0].Product *= 2;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[1].Product / eq[1].Buy &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[1].Product / eq[1].Buy &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[1].Product / eq[1].Buy &&
                         eq[2].Product / eq[2].Buy <= eq[1].Product / eq[1].Buy &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[1].Product / eq[1].Buy &&
                         eq[3].Product / eq[3].Buy <= eq[1].Product / eq[1].Buy &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[1].Product / eq[1].Buy &&
                         eq[4].Product / eq[4].Buy <= eq[1].Product / eq[1].Buy &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[1].Product / eq[1].Buy &&
                         (eq[1].Buy <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[1].Buy * 0.9) <= Cookies))
                {
                    Console.WriteLine("buy " + eq[1].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[1].Buy * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[1].Buy;
                    }
                    eq[1].Buy = (int)Math.Ceiling((double)eq[1].Buy * 1.2);
                    eq[1].Count++;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[1].Product / eq[1].Buy <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[2].Product / eq[2].Buy <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[3].Product / eq[3].Buy <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[4].Product / eq[4].Buy <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[1].Count * eq[1].Product / eq[1].Reinforce &&
                         (eq[1].Reinforce <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[1].Reinforce * 0.9) <= Cookies))
                {
                    Console.WriteLine("reinforce " + eq[1].Name);
                    Console.ReadLine();
                    
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[1].Reinforce * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[1].Reinforce;
                    }
                    eq[1].Reinforce = eq[1].Reinforce * 10;
                    eq[1].Product *= 2;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[2].Product / eq[2].Buy &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[2].Product / eq[2].Buy &&
                         eq[1].Product / eq[1].Buy <= eq[2].Product / eq[2].Buy &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[2].Product / eq[2].Buy &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[2].Product / eq[2].Buy &&
                         eq[3].Product / eq[3].Buy <= eq[2].Product / eq[2].Buy &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[2].Product / eq[2].Buy &&
                         eq[4].Product / eq[4].Buy <= eq[2].Product / eq[2].Buy &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[2].Product / eq[2].Buy &&
                         (eq[2].Buy <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[2].Buy * 0.9) <= Cookies))
                {
                    Console.WriteLine("buy " + eq[2].Name);
                    Console.ReadLine();
                    
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[2].Buy * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[2].Buy;
                    }
                    eq[2].Buy = (int)Math.Ceiling((double)eq[2].Buy * 1.2);
                    eq[2].Count++;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[1].Product / eq[1].Buy <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[2].Product / eq[2].Buy <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[3].Product / eq[3].Buy <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[4].Product / eq[4].Buy <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[2].Count * eq[2].Product / eq[2].Reinforce &&
                         (eq[2].Reinforce <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[2].Reinforce * 0.9) <= Cookies))
                {
                    Console.WriteLine("reinforce " + eq[2].Name);
                    Console.ReadLine();
                    
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[2].Reinforce * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[2].Reinforce;
                    }
                    eq[2].Reinforce = eq[2].Reinforce * 10;
                    eq[2].Product *= 2;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[3].Product / eq[3].Buy &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[3].Product / eq[3].Buy &&
                         eq[1].Product / eq[1].Buy <= eq[3].Product / eq[3].Buy &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[3].Product / eq[3].Buy &&
                         eq[2].Product / eq[2].Buy <= eq[3].Product / eq[3].Buy &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[3].Product / eq[3].Buy &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[3].Product / eq[3].Buy &&
                         eq[4].Product / eq[4].Buy <= eq[3].Product / eq[3].Buy &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[3].Product / eq[3].Buy &&
                         (eq[3].Buy <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[3].Buy * 0.9) <= Cookies))
                {
                    Console.WriteLine("buy " + eq[3].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[3].Buy * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[3].Buy;
                    }
                    eq[3].Buy = (int)Math.Ceiling((double)eq[3].Buy * 1.2);
                    eq[3].Count++;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[1].Product / eq[1].Buy <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[2].Product / eq[2].Buy <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[3].Product / eq[3].Buy <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[4].Product / eq[4].Buy <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[3].Count * eq[3].Product / eq[3].Reinforce &&
                         (eq[3].Reinforce <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[3].Reinforce * 0.9) <= Cookies))
                {
                    Console.WriteLine("reinforce " + eq[3].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[3].Reinforce * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[3].Reinforce;
                    }
                    eq[3].Reinforce = eq[3].Reinforce * 10;
                    eq[3].Product *= 2;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[4].Product / eq[4].Buy &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[4].Product / eq[4].Buy &&
                         eq[1].Product / eq[1].Buy <= eq[4].Product / eq[4].Buy &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[4].Product / eq[4].Buy &&
                         eq[2].Product / eq[2].Buy <= eq[4].Product / eq[4].Buy &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[4].Product / eq[4].Buy &&
                         eq[3].Product / eq[3].Buy <= eq[4].Product / eq[4].Buy &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[4].Product / eq[4].Buy &&
                         eq[4].Count * eq[4].Product / eq[4].Reinforce <= eq[4].Product / eq[4].Buy &&
                         (eq[4].Buy <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[4].Buy * 0.9) <= Cookies))
                {
                    Console.WriteLine("buy " + eq[4].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[4].Buy * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[4].Buy;
                    }
                    eq[4].Buy = (int)Math.Ceiling((double)eq[4].Buy * 1.2);
                    eq[4].Count++;
                    
                    continue;
                }
                else if (eq[0].Product / eq[0].Buy <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[0].Count * eq[0].Product / eq[0].Reinforce <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[1].Product / eq[1].Buy <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[1].Count * eq[1].Product / eq[1].Reinforce <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[2].Product / eq[2].Buy <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[2].Count * eq[2].Product / eq[2].Reinforce <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[3].Product / eq[3].Buy <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[3].Count * eq[3].Product / eq[3].Reinforce <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         eq[4].Product / eq[4].Buy <= eq[4].Count * eq[4].Product / eq[4].Reinforce &&
                         (eq[4].Reinforce <= Cookies || (SpecialFactor.Substring(nowTurn, 1) == "S") && Math.Ceiling(eq[4].Reinforce * 0.9) <= Cookies))
                {
                    Console.WriteLine("reinforce " + eq[4].Name);
                    Console.ReadLine();
                    if (SpecialFactor.Substring(nowTurn, 1) == "S")
                    {
                        Cookies -= (int)Math.Ceiling(eq[4].Reinforce * 0.9);
                    }
                    else
                    {
                        Cookies -= eq[4].Reinforce;
                    }
                    eq[4].Reinforce = eq[4].Reinforce * 10;
                    eq[4].Product *= 2;
                    continue;
                }
                
                Console.WriteLine("click");
                Console.ReadLine();
                Cookies++;
                Cookies++;
            }
            catch
            {
            }
            finally
            {
                if(SpecialFactor.Substring(nowTurn, 1) == "B")
                {
                    Cookies += (int)Math.Floor(Cookies * 0.01);
                }
                Cookies += GetProducts();
            }
        }    
    }
    private static int GetProducts()
    {
        SevenTimesTurn--;
        return 0 < SevenTimesTurn ? 
            (eq[0].Product * eq[0].Count + eq[1].Product * eq[1].Count + eq[2].Product * eq[2].Count + eq[3].Product * eq[3].Count + eq[4].Product * eq[4].Count) * 7 
            : eq[0].Product * eq[0].Count + eq[1].Product * eq[1].Count + eq[2].Product * eq[2].Count + eq[3].Product * eq[3].Count + eq[4].Product * eq[4].Count;
    }
}
class Equipment
{
    public string Name { get; set; }
    public int Buy = 0;
    public int Product = 0;
    public int Reinforce = 0;
    public int Count = 0;
}
            
            
            
        