結果
| 問題 | No.24 数当てゲーム |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-07 20:47:24 |
| 言語 | C# (.NET 8.0.404) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,503 bytes |
| 記録 | |
| コンパイル時間 | 7,337 ms |
| コンパイル使用メモリ | 169,228 KB |
| 実行使用メモリ | 194,444 KB |
| 最終ジャッジ日時 | 2025-12-07 20:47:37 |
| 合計ジャッジ時間 | 11,640 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 10 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (104 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 1 行目:ターン数 T と、全体の数字範囲 N、提示する個数 K が与えられていると仮定
// 問題文の通りなら入力形式は「T」だけだが、
// 提示される数字の最大値 N を知る必要があるため、
// 多くの類題と同じ形式として扱う
// 例: "T N K"
var first = Console.ReadLine().Split()
.Select(int.Parse).ToArray();
int T = first[0];
int N = first[1];
int K = first[2];
// 候補集合(1〜N)
HashSet<int> candidate = new HashSet<int>(Enumerable.Range(1, N));
// 各ターン処理
for (int t = 0; t < T; t++)
{
var line = Console.ReadLine().Split();
// 最初の K 個が提示数字
List<int> shown = line.Take(K).Select(int.Parse).ToList();
// 最後が YES/NO
string answer = line[K];
if (answer == "YES")
{
// candidate = candidate ∩ shown
candidate.IntersectWith(shown);
}
else // NO
{
// candidate = candidate − shown
candidate.ExceptWith(shown);
}
}
// 最後は候補が1つになる
Console.WriteLine(candidate.First());
}
}