AOJ本の読書メモ
AOJ
次のAOJの問題へ
前のAOJの問題へ
AOJ 0567 最高のピザ (Best Pizza)
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("3");
WillReturn.Add("12 2");
WillReturn.Add("200");
WillReturn.Add("50");
WillReturn.Add("300");
WillReturn.Add("100");
//37
}
else if (InputPattern == "Input2") {
WillReturn.Add("4");
WillReturn.Add("20 3");
WillReturn.Add("900");
WillReturn.Add("300");
WillReturn.Add("100");
WillReturn.Add("400");
WillReturn.Add("1300");
//100
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
long[] wkArr = InputList[1].Split(' ').Select(pX => long.Parse(pX)).ToArray();
long ACost = wkArr[0];
long BCost = wkArr[1];
long AVal = long.Parse(InputList[2]);
long[] BValArr = InputList.Skip(3).Select(pX => long.Parse(pX)).ToArray();
BValArr = BValArr.OrderByDescending(pX => pX).ToArray();
var AnswerList = new List<long>();
long CostSum = ACost;
long ValSum = AVal;
AnswerList.Add(ValSum / CostSum);
foreach (long EachBVal in BValArr) {
ValSum += EachBVal;
CostSum += BCost;
AnswerList.Add(ValSum / CostSum);
}
Console.WriteLine(AnswerList.Max());
}
}
解説
貪欲法で全探索してます。