Submission #51057943


Source Code Expand

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;

namespace Tasks;

public class E
{
    public static void Main()
    {
        using var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
        Console.SetOut(sw);
        Solve();
        Console.Out.Flush();
    }

    public static void Solve()
    {
        var N = Scanner.Scan<int>();
        var A = Scanner.ScanEnumerable<int>().ToArray();
        var prev = new Dictionary<int, int>();
        var next = new Dictionary<int, int>();
        next[A[^1]] = -1;
        prev[-1] = A[^1];
        prev[A[0]] = -2;
        next[-2] = A[0];
        for (var i = 0; i + 1 < N; i++)
        {
            var u = A[i];
            var v = A[i + 1];
            next[u] = v;
            prev[v] = u;
        }

        var Q = Scanner.Scan<int>();
        for (var q = 1; q <= Q; q++)
        {
            var query = Scanner.ScanEnumerable<int>().ToArray();
            if (query[0] == 1)
            {
                var (x, y) = (query[1], query[2]);
                var a = x;
                var b = y;
                var c = next[x];
                next[a] = b;
                next[b] = c;
                prev[b] = a;
                prev[c] = b;
            }
            else
            {
                var x = query[1];
                var a = prev[x];
                var b = x;
                var c = next[x];
                next[a] = c;
                prev[c] = a;
            }
        }

        var curr = next[-2];
        var answer = new List<int>();
        while (curr >= 0)
        {
            answer.Add(curr);
            curr = next[curr];
        }

        Console.WriteLine(string.Join(" ", answer));
    }

    public static class Scanner
    {
        public static T Scan<T>() where T : IConvertible => Convert<T>(ScanStringArray()[0]);
        public static (T1, T2) Scan<T1, T2>() where T1 : IConvertible where T2 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]));
        }
        public static (T1, T2, T3) Scan<T1, T2, T3>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]));
        }
        public static (T1, T2, T3, T4) Scan<T1, T2, T3, T4>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[3]));
        }
        public static (T1, T2, T3, T4, T5) Scan<T1, T2, T3, T4, T5>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[3]), Convert<T5>(input[4]));
        }
        public static (T1, T2, T3, T4, T5, T6) Scan<T1, T2, T3, T4, T5, T6>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible where T6 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[3]), Convert<T5>(input[4]), Convert<T6>(input[5]));
        }
        public static IEnumerable<T> ScanEnumerable<T>() where T : IConvertible => ScanStringArray().Select(Convert<T>);
        private static string[] ScanStringArray()
        {
            var line = Console.ReadLine()?.Trim() ?? string.Empty;
            return string.IsNullOrEmpty(line) ? Array.Empty<string>() : line.Split(' ');
        }
        private static T Convert<T>(string value) where T : IConvertible => (T)System.Convert.ChangeType(value, typeof(T));
    }
}

Submission Info

Submission Time
Task E - Insert or Erase
User AconCavy
Language C# 11.0 (.NET 7.0.7)
Score 475
Code Size 4203 Byte
Status AC
Exec Time 341 ms
Memory 118524 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 2
AC × 24
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All min.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
min.txt AC 49 ms 26412 KiB
random_01.txt AC 341 ms 118524 KiB
random_02.txt AC 291 ms 92368 KiB
random_03.txt AC 264 ms 99836 KiB
random_04.txt AC 159 ms 56788 KiB
random_05.txt AC 331 ms 87392 KiB
random_06.txt AC 250 ms 80724 KiB
random_07.txt AC 282 ms 86644 KiB
random_08.txt AC 160 ms 74548 KiB
random_09.txt AC 267 ms 80580 KiB
random_10.txt AC 177 ms 70440 KiB
random_11.txt AC 203 ms 80604 KiB
random_12.txt AC 101 ms 52932 KiB
random_13.txt AC 288 ms 118480 KiB
random_14.txt AC 243 ms 87700 KiB
random_15.txt AC 232 ms 80828 KiB
random_16.txt AC 316 ms 118488 KiB
random_17.txt AC 248 ms 87396 KiB
random_18.txt AC 223 ms 80872 KiB
random_19.txt AC 176 ms 76236 KiB
random_20.txt AC 234 ms 108332 KiB
random_21.txt AC 175 ms 77864 KiB
sample_01.txt AC 51 ms 26584 KiB
sample_02.txt AC 60 ms 26484 KiB