結果
| 問題 | No.466 ジオラマ |
| コンテスト | |
| ユーザー |
14番
|
| 提出日時 | 2016-12-16 01:49:59 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,708 bytes |
| 記録 | |
| コンパイル時間 | 1,397 ms |
| コンパイル使用メモリ | 109,568 KB |
| 実行使用メモリ | 26,368 KB |
| 最終ジャッジ日時 | 2024-11-30 09:45:41 |
| 合計ジャッジ時間 | 10,754 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 60 WA * 23 |
コンパイルメッセージ
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(c=>int.Parse(c)).ToArray();
int a = inpt[0];
int b = inpt[1];
int aAndB = inpt[2];
int roadCount = inpt[3];
if(aAndB > 0 && a+b-aAndB-1>roadCount) {
Console.WriteLine(-1);
return;
}
if(aAndB == 0 && a+b-2>roadCount) {
Console.WriteLine(-1);
return;
}
TreeNode t0 = new TreeNode(0);
TreeNode t1 = new TreeNode(1);
if(aAndB == a) {
t1.Add(t0);
int idx = 2;
if(a>1) {
t0.AddRange(idx, idx+a-2);
}
idx = idx+a-1;
if(b-aAndB>1) {
t1.AddRange(idx, idx+(b-aAndB)-2);
}
} else if(aAndB == b) {
t0.Add(t1);
int idx = 2;
if(b>1) {
t1.AddRange(idx, idx+b-2);
}
idx = idx+b-1;
if(a-aAndB>1) {
t0.AddRange(idx, idx+(a-aAndB)-2);
}
} else {
TreeNode t2 = null;
int idx = 2;
if(aAndB > 0) {
t2 = new TreeNode(2);
idx++;
if(aAndB >1) {
t2.AddRange(idx, idx+aAndB-2);
idx=idx+aAndB-1;
}
t0.Add(t2);
t1.Add(t2);
}
if(a-aAndB>1) {
t0.AddRange(idx, idx+(a-aAndB)-2);
idx = idx+(a-aAndB)-1;
}
if(b-aAndB>1) {
t1.AddRange(idx, idx+(b-aAndB)-2);
}
}
StringBuilder ans = new StringBuilder();
ans.Append(t0.Print());
ans.Append(t1.Print());
int mura = a+b-aAndB;
Console.WriteLine(mura + " " + (mura-1));
Console.Write(ans.ToString());
}
public class TreeNode {
public int Id;
public List<TreeNode> Items = new List<TreeNode>();
public TreeNode(int id) {
this.Id = id;
}
public void Add(TreeNode cld) {
this.Items.Add(cld);
}
private bool IsPrinted = false;
public string Print() {
if(this.IsPrinted) {
return string.Empty;
}
this.IsPrinted = true;
StringBuilder ret = new StringBuilder();
this.Items.ForEach(a=>{
ret.AppendLine(this.Id + " " + a.Id);
ret.Append(a.Print());
});
return ret.ToString();
}
public List<TreeNode> AddRange(int f, int t) {
List<TreeNode> tmp = new List<TreeNode>();
for(int i=f; i<=t; i++) {
tmp.Add(new TreeNode(i));
}
this.Items.AddRange(tmp);
return tmp;
}
}
public class Reader {
public static bool IsDebug = true;
private static System.IO.StringReader SReader;
private static string InitText = @"
1 4 0 3
";
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();
}
}
14番