結果
問題 | No.250 atetubouのzetubou |
ユーザー |
![]() |
提出日時 | 2016-05-09 03:51:02 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 954 ms / 5,000 ms |
コード長 | 2,697 bytes |
コンパイル時間 | 1,644 ms |
コンパイル使用メモリ | 112,968 KB |
実行使用メモリ | 34,052 KB |
最終ジャッジ日時 | 2024-10-05 13:03:10 |
合計ジャッジ時間 | 15,896 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
コンパイルメッセージ
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{public void Proc(){Reader.IsDebug = false;int queryCount = int.Parse(Reader.ReadLine());for(int i=0; i<queryCount; i++) {long[] inpt = Reader.ReadLine().Split(' ').Select(a=>long.Parse(a)).ToArray();ulong target = (ulong)inpt[2];ulong cnt = this.GetCnt((int)inpt[0], (int)inpt[1], target);if(cnt > target) {Console.WriteLine("ZETUBOU");} else{Console.WriteLine("AC");}}}private Dictionary<int, Dictionary<int, ulong>> dic = new Dictionary<int, Dictionary<int, ulong>>();private ulong GetCnt(int d, int x, ulong max) {if(!dic.ContainsKey(d)) {dic.Add(d, new Dictionary<int, ulong>());}if(dic[d].ContainsKey(x)) {return dic[d][x];}ulong ans = 0;if(d == 1) {return 1;}if(d == 2) {return (ulong)x + 1;}if(x == 0) {return 1;}for(int i=0; i<=x; i++) {ulong ret = this.GetCnt(d-1, x - i, max);if(ret == ulong.MaxValue) {return ulong.MaxValue;}ans += ret;if(ans > max) {return ulong.MaxValue;}}dic[d].Add(x, ans);return ans;}public class Reader{public static bool IsDebug = true;private static String PlainInput = @"358 62 100012 34 56987 65 1234";private static System.IO.StringReader Sr = null;public static string ReadLine(){if (IsDebug){if (Sr == null){Sr = new System.IO.StringReader(PlainInput.Trim());}return Sr.ReadLine();}else{return Console.ReadLine();}}public static int[] GetInt(char delimiter = ' ', bool trim = false){string inptStr = ReadLine();if (trim){inptStr = inptStr.Trim();}string[] inpt = inptStr.Split(delimiter);int[] ret = new int[inpt.Length];for (int i = 0; i < inpt.Length; i++){ret[i] = int.Parse(inpt[i]);}return ret;}}static void Main(){Program prg = new Program();prg.Proc();}}