結果
問題 | No.1021 Children in Classrooms |
ユーザー | 明智重蔵 |
提出日時 | 2022-12-29 18:57:24 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 160 ms / 2,000 ms |
コード長 | 5,034 bytes |
コンパイル時間 | 2,653 ms |
コンパイル使用メモリ | 110,976 KB |
実行使用メモリ | 52,184 KB |
最終ジャッジ日時 | 2024-05-03 16:45:24 |
合計ジャッジ時間 | 6,421 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 29 ms
19,200 KB |
testcase_01 | AC | 28 ms
19,072 KB |
testcase_02 | AC | 28 ms
19,072 KB |
testcase_03 | AC | 34 ms
19,840 KB |
testcase_04 | AC | 35 ms
19,840 KB |
testcase_05 | AC | 36 ms
19,968 KB |
testcase_06 | AC | 32 ms
20,096 KB |
testcase_07 | AC | 34 ms
19,968 KB |
testcase_08 | AC | 34 ms
19,968 KB |
testcase_09 | AC | 153 ms
52,088 KB |
testcase_10 | AC | 155 ms
52,060 KB |
testcase_11 | AC | 156 ms
51,968 KB |
testcase_12 | AC | 160 ms
51,920 KB |
testcase_13 | AC | 155 ms
52,184 KB |
testcase_14 | AC | 154 ms
51,920 KB |
testcase_15 | AC | 120 ms
40,940 KB |
testcase_16 | AC | 121 ms
41,264 KB |
testcase_17 | AC | 124 ms
42,064 KB |
testcase_18 | AC | 156 ms
51,444 KB |
testcase_19 | AC | 38 ms
19,328 KB |
コンパイルメッセージ
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; // https://yukicoder.me/problems/no/1021 class Program { static string InputPattern = "InputX"; static List<string> GetInputList() { var WillReturn = new List<string>(); if (InputPattern == "Input1") { WillReturn.Add("4 3"); WillReturn.Add("3 1 4 1"); WillReturn.Add("LRR"); //0 0 4 5 } else if (InputPattern == "Input2") { WillReturn.Add("2 7"); WillReturn.Add("1 8"); WillReturn.Add("LLLLLLL"); //9 0 } else if (InputPattern == "Input3") { WillReturn.Add("5 6"); WillReturn.Add("314 0 1 5 9"); WillReturn.Add("RLRLLR"); //0 314 1 14 0 } else { string wkStr; while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr); } return WillReturn; } static void Main() { List<string> InputList = GetInputList(); long[] AArr = InputList[1].Split(' ').Select(pX => long.Parse(pX)).ToArray(); var InsDeque = new Deque<long>(); foreach (long EachA in AArr) { InsDeque.PushBack(EachA); } string S = InputList[2]; foreach (char EachChar in S) { if (EachChar == 'L') { long FrontVal = InsDeque[0]; InsDeque.PopFront(); InsDeque[0] += FrontVal; InsDeque.PushBack(0); } if (EachChar == 'R') { long BackVal = InsDeque[InsDeque.Count - 1]; InsDeque.PopBack(); InsDeque[InsDeque.Count - 1] += BackVal; InsDeque.PushFront(0); } } var AnswerList = new List<long>(); for (int I = 0; I <= InsDeque.Count - 1; I++) { AnswerList.Add(InsDeque[I]); } Console.WriteLine(LongEnumJoin(" ", AnswerList)); } // セパレータとLong型の列挙を引数として、結合したstringを返す static string LongEnumJoin(string pSeparater, IEnumerable<long> pEnum) { string[] StrArr = Array.ConvertAll(pEnum.ToArray(), pX => pX.ToString()); return string.Join(pSeparater, StrArr); } } #region Deque internal class Deque<T> { T[] buf; int offset, count, capacity; internal int Count { get { return count; } } internal Deque(int cap) { buf = new T[capacity = cap]; } internal Deque() { buf = new T[capacity = 16]; } internal T this[int index] { get { return buf[GetIndex(index)]; } set { buf[GetIndex(index)] = value; } } private int GetIndex(int index) { if (index >= capacity) throw new IndexOutOfRangeException("out of range"); int ret = index + offset; if (ret >= capacity) ret -= capacity; return ret; } internal void PushFront(T item) { if (count == capacity) Extend(); if (--offset < 0) offset += buf.Length; buf[offset] = item; count++; } internal T PopFront() { if (count == 0) throw new InvalidOperationException("collection is empty"); count--; T ret = buf[offset++]; if (offset >= capacity) offset -= capacity; return ret; } internal void PushBack(T item) { if (count == capacity) Extend(); int id = count + offset; count++; if (id >= capacity) id -= capacity; buf[id] = item; } internal T PopBack() { if (count == 0) throw new InvalidOperationException("collection is empty"); return buf[GetIndex(--count)]; } internal void Insert(int index, T item) { if (index > count) throw new IndexOutOfRangeException(); this.PushFront(item); for (int i = 0; i < index; i++) this[i] = this[i + 1]; this[index] = item; } internal T RemoveAt(int index) { if (index < 0 || index >= count) throw new IndexOutOfRangeException(); T ret = this[index]; for (int i = index; i > 0; i--) this[i] = this[i - 1]; this.PopFront(); return ret; } private void Extend() { T[] newBuffer = new T[capacity << 1]; if (offset > capacity - count) { int len = buf.Length - offset; Array.Copy(buf, offset, newBuffer, 0, len); Array.Copy(buf, 0, newBuffer, len, count - len); } else Array.Copy(buf, offset, newBuffer, 0, count); buf = newBuffer; offset = 0; capacity <<= 1; } internal T[] Items//デバッグ時に中身を調べるためのプロパティ { get { T[] a = new T[count]; for (int i = 0; i < count; i++) a[i] = this[i]; return a; } } } #endregion