結果

問題 No.1328 alligachi-problem
ユーザー さかぽんさかぽん
提出日時 2020-12-25 01:44:16
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 1,190 ms / 2,000 ms
コード長 1,776 bytes
コンパイル時間 2,726 ms
コンパイル使用メモリ 116,588 KB
実行使用メモリ 73,656 KB
最終ジャッジ日時 2024-09-21 17:24:03
合計ジャッジ時間 19,529 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 47 ms
24,496 KB
testcase_01 AC 46 ms
26,076 KB
testcase_02 AC 47 ms
26,460 KB
testcase_03 AC 42 ms
27,756 KB
testcase_04 AC 54 ms
26,504 KB
testcase_05 AC 53 ms
26,884 KB
testcase_06 AC 53 ms
26,628 KB
testcase_07 AC 54 ms
26,668 KB
testcase_08 AC 48 ms
26,460 KB
testcase_09 AC 618 ms
73,536 KB
testcase_10 AC 465 ms
66,084 KB
testcase_11 AC 604 ms
71,404 KB
testcase_12 AC 613 ms
71,472 KB
testcase_13 AC 622 ms
71,644 KB
testcase_14 AC 617 ms
72,504 KB
testcase_15 AC 464 ms
66,400 KB
testcase_16 AC 615 ms
70,760 KB
testcase_17 AC 610 ms
71,304 KB
testcase_18 AC 608 ms
71,828 KB
testcase_19 AC 611 ms
71,508 KB
testcase_20 AC 614 ms
73,656 KB
testcase_21 AC 612 ms
70,464 KB
testcase_22 AC 614 ms
72,372 KB
testcase_23 AC 466 ms
67,772 KB
testcase_24 AC 498 ms
63,836 KB
testcase_25 AC 511 ms
67,540 KB
testcase_26 AC 1,190 ms
73,128 KB
testcase_27 AC 1,189 ms
72,428 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections.Generic;
using System.Linq;

class Y
{
	static void Main()
	{
		var n = int.Parse(Console.ReadLine());
		var cxys = new bool[n]
			.Select((_, i) =>
			{
				var v = Console.ReadLine().Split();
				return (i: i + 1, c: v[0], x: v[1], y: int.Parse(v[2]));
			})
			.ToArray();

		var qr = new Queue<(int i, string c, string x, int y)>(cxys.Where(v => v.x == "R").OrderBy(v => v.y).ThenBy(v => v.c));
		var qb = new Queue<(int i, string c, string x, int y)>(cxys.Where(v => v.x == "B").OrderBy(v => v.y).ThenByDescending(v => v.c));

		var a = new List<int>();
		var d = new Dictionary<string, int>();
		d["R"] = 0;
		d["B"] = 0;

		while (qr.Count > 0 || qb.Count > 0)
		{
			if (qr.Count == 0)
			{
				var v = qb.Dequeue();
				if (d[v.x] != v.y) { Console.WriteLine("No"); return; }
				a.Add(v.i);
				d[v.c]++;
			}
			else if (qb.Count == 0)
			{
				var v = qr.Dequeue();
				if (d[v.x] != v.y) { Console.WriteLine("No"); return; }
				a.Add(v.i);
				d[v.c]++;
			}
			else
			{
				var vr = qr.Peek();
				var vb = qb.Peek();
				if (d[vr.x] != vr.y && d[vb.x] != vb.y) { Console.WriteLine("No"); return; }
				if (d[vr.x] != vr.y)
				{
					qb.Dequeue();
					a.Add(vb.i);
					d[vb.c]++;
				}
				else if (d[vb.x] != vb.y)
				{
					qr.Dequeue();
					a.Add(vr.i);
					d[vr.c]++;
				}
				else
				{
					if (vr.c == vr.x && vb.c == vb.x || vr.c != vr.x && vb.c != vb.x)
					{
						qr.Dequeue();
						a.Add(vr.i);
						d[vr.c]++;
					}
					else
					{
						if (vr.c == vr.x)
						{
							qr.Dequeue();
							a.Add(vr.i);
							d[vr.c]++;
						}
						else
						{
							qb.Dequeue();
							a.Add(vb.i);
							d[vb.c]++;
						}
					}
				}
			}
		}
		Console.WriteLine("Yes\n" + string.Join(" ", a));
	}
}
0