結果
問題 | No.2210 equence Squence Seuence |
ユーザー |
|
提出日時 | 2023-02-20 21:54:38 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 167 ms / 2,000 ms |
コード長 | 3,725 bytes |
コンパイル時間 | 1,088 ms |
コンパイル使用メモリ | 110,080 KB |
実行使用メモリ | 41,344 KB |
最終ジャッジ日時 | 2024-07-21 12:05:25 |
合計ジャッジ時間 | 6,138 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using static System.Console;using System.Linq;using System.Collections.Generic;class Program{static int NN => int.Parse(ReadLine());static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();static int[] NMi => ReadLine().Split().Select(c => int.Parse(c) - 1).ToArray();static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NMi).ToArray();public static void Main(){Solve();}static void Solve(){var c = NList;var (n, k) = (c[0], c[1]);var a = NList;var q = new Deque<int>(n);for (var i = 0; i < n; ++i) q.Enqueue(i + 1);var cnt = 1;var pos = -1;for (var i = 0; i + 1 < n; ++i){if (pos >= 0) break;if (a[i] == a[i + 1]){++cnt;}else if (a[i] > a[i + 1]){for (var j = 0; j < cnt; ++j){if (q.Dequeue() == k){pos = i;break;}}cnt = 1;}else{for (var j = 0; j < cnt; ++j){if (q.Pop() == k){pos = i;break;}}cnt = 1;}}if (pos < 0) pos = n - 1;WriteLine(string.Join(" ", a.Take(pos).Concat(a.Skip(pos + 1))));}/// 前後から出し入れ可能なキューclass Deque<T>{int _s = 0;int _t = 0;T[] _arr;public Deque() : this(4){}public Deque(int size){_arr = new T[size];}public Deque(IEnumerable<T> init){var list = init.ToArray();var size = 4;while (size <= list.Length) size <<= 1;_arr = new T[size];for (var i = 0; i < list.Length; ++i) _arr[i] = list[i];_t = _arr.Length;}public int Count{get { return (_t + _arr.Length - _s) % _arr.Length; }}public void Enqueue(T item){if (Count + 1 == _arr.Length) Expand();if (_t == _arr.Length) _t = 0;_arr[_t++] = item;}public T Dequeue(){var ret = _arr[_s++];if (_s == _arr.Length) _s = 0;return ret;}public void Push(T item){Enqueue(item);}public void PushFront(T item){if (Count + 1 == _arr.Length) Expand();if (_s == 0) _s = _arr.Length;_arr[--_s] = item;}public T Pop(){var ret = _arr[--_t];if (_t == 0) _t = _arr.Length;return ret;}public T Peek(){if (Count == 0) throw new InvalidOperationException("deque is empty");return _arr[_s];}void Expand(){var count = Count;var na = new T[_arr.Length * 2];var cur = 0;if (_s <= _t){for (var i = _s; i < _t; ++i) na[cur++] = _arr[i];}else{for (var i = _s; i < _arr.Length; ++i) na[cur++] = _arr[i];for (var i = 0; i < _t; ++i) na[cur++] = _arr[i];}_s = 0;_t = count;_arr = na;}}}