結果
| 問題 |
No.178 美しいWhitespace (1)
|
| コンテスト | |
| ユーザー |
aketijyuuzou
|
| 提出日時 | 2024-10-10 23:26:35 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 35 ms / 2,000 ms |
| コード長 | 2,922 bytes |
| コンパイル時間 | 994 ms |
| コンパイル使用メモリ | 113,984 KB |
| 実行使用メモリ | 27,244 KB |
| 最終ジャッジ日時 | 2024-10-10 23:26:38 |
| 合計ジャッジ時間 | 2,874 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
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("2");
WillReturn.Add("1 1");
WillReturn.Add("3 0");
//1
//1行目はスペースが1個、タブが1個なので幅は1+1×4=5です。
//2行目はスペースが3個、タブは0個なので幅は3+0×4=3です。
//このままでは「完璧」でないですが、
//2行目に全角スペースを1個足せば全ての行の幅が5となり「完璧」になるので、1を出力します。
}
else if (InputPattern == "Input2") {
WillReturn.Add("4");
WillReturn.Add("0 0");
WillReturn.Add("0 0");
WillReturn.Add("0 0");
WillReturn.Add("0 0");
//0
//全ての行の幅ははじめから0で、すでに「完璧」です。
//全角スペースを足す必要はないので、0を出力します。
}
else if (InputPattern == "Input3") {
WillReturn.Add("2");
WillReturn.Add("0 0");
WillReturn.Add("1 0");
//-1
//1行目の幅は0で、2行目の幅は1です。
//どのように全角スペースを足しても「完璧」にできないので、-1を出力します。
}
else if (InputPattern == "Input4") {
WillReturn.Add("4");
WillReturn.Add("30 0");
WillReturn.Add("20 10");
WillReturn.Add("10 20");
WillReturn.Add("0 30");
//90
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
var ResultSet = new List<int>();
foreach (string EachStr in InputList.Skip(1)) {
int[] wkArr = EachStr.Split(' ').Select(X => int.Parse(X)).ToArray();
ResultSet.Add(wkArr[0] + 4 * wkArr[1]);
}
//2を法として余りが0の集合
List<int> Mod0List = ResultSet.FindAll(X => X % 2 == 0);
//2を法として余りが1の集合
List<int> Mod1List = ResultSet.FindAll(X => X % 2 == 1);
//両方とも空集合でない場合
if (Mod0List.Count > 0 && Mod1List.Count > 0) {
Console.WriteLine(-1);
return;
}
List<int> WkList = (Mod0List.Count == 0 ? Mod1List : Mod0List);
int wkMax = WkList.Max();
long Answer = 0;
WkList.ForEach(X => Answer += (wkMax - X) / 2);
Console.WriteLine(Answer);
}
}
aketijyuuzou