結果
問題 | No.1021 Children in Classrooms |
ユーザー |
![]() |
提出日時 | 2022-12-29 18:57:24 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 153 ms / 2,000 ms |
コード長 | 5,034 bytes |
コンパイル時間 | 2,352 ms |
コンパイル使用メモリ | 109,952 KB |
実行使用メモリ | 52,168 KB |
最終ジャッジ日時 | 2024-11-24 19:24:49 |
合計ジャッジ時間 | 6,219 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
コンパイルメッセージ
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/1021class 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 Dequeinternal 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