結果
問題 | No.466 ジオラマ |
ユーザー | 14番 |
提出日時 | 2016-12-18 15:10:46 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 51 ms / 2,000 ms |
コード長 | 3,742 bytes |
コンパイル時間 | 1,165 ms |
コンパイル使用メモリ | 114,688 KB |
実行使用メモリ | 33,268 KB |
最終ジャッジ日時 | 2024-12-14 08:24:39 |
合計ジャッジ時間 | 8,586 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 83 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.Linq; using System.Collections.Generic; using System.Text; public class Program { public void Proc() { Reader.IsDebug =false; int[] inpt = Reader.ReadLine().Split(' ').Select(a=>int.Parse(a)).ToArray(); if(inpt[0] == inpt[1] && inpt[0] == inpt[2] && inpt[2] < 2) { Console.WriteLine(-1); return; } Mura m0 = new Mura(); Mura m1 = new Mura(); if(inpt[0] == inpt[1] && inpt[0] == inpt[2]) { m0.AddRange(inpt[0] - 2); m0.Add(m1); m1.Add(m0); } else if(inpt[0] == inpt[2]) { m0.AddRange(inpt[2] - 1); m1.Add(m0); m1.AddRange(inpt[1] - 1 - inpt[2]); } else if(inpt[1] == inpt[2]) { m1.AddRange(inpt[2] - 1); m0.Add(m1); m0.AddRange(inpt[0] - 1 - inpt[2]); } else if(inpt[2] == 0) { m0.AddRange(inpt[0] - 1); m1.AddRange(inpt[1] - 1); } else { m0.AddRange(inpt[0] - 1 - inpt[2]); m1.AddRange(inpt[1] - 1 - inpt[2]); Mura hub = new Mura(); hub.AddRange(inpt[2]-1); m0.Add(hub); m1.Add(hub); } string ans = Mura.GetAns(); if(Mura.RoadCount > inpt[3]) { Console.WriteLine(-1); return; } Console.WriteLine(Mura.MuraList.Count + " " + Mura.RoadCount); if(Mura.RoadCount > 0) { Console.Write(ans); } } public class Mura { public static int RoadCount; public static String GetAns() { RoadCount = 0; string tmp1 = MuraList[0].PrintRoad(); string tmp2 = MuraList[1].PrintRoad(); return tmp1 + tmp2; } public static List<Mura> MuraList = new List<Mura>(); public int ID = -1; public List<Mura> Items = new List<Mura>(); private bool IsPrinted = false; public Mura() { this.ID = MuraList.Count; MuraList.Add(this); } public Mura Add() { Mura m = new Mura(); this.Items.Add(m); return m; } public Mura Add(Mura chld) { this.Items.Add(chld); return chld; } public string PrintRoad() { if(this.IsPrinted) { return string.Empty; } IsPrinted = true; StringBuilder ans = new StringBuilder(); foreach(Mura cld in this.Items) { ans.AppendLine(this.ID + " " + cld.ID); RoadCount++; ans.Append(cld.PrintRoad()); } return ans.ToString(); } public List<Mura> AddRange(int count) { List<Mura> ret = new List<Mura>(); if(count == 0) { return ret; } for(int i=0; i<count; i++) { ret.Add(new Mura()); } this.Items.AddRange(ret); return ret; } } public class Reader { public static bool IsDebug = true; private static System.IO.StringReader SReader; private static string InitText = @" 5 3 3 5 "; public static string ReadLine() { if(IsDebug) { if(SReader == null) { SReader = new System.IO.StringReader(InitText.Trim()); } return SReader.ReadLine(); } else { return Console.ReadLine(); } } } public static void Main(string[] args) { Program prg = new Program(); prg.Proc(); } }