Beispiel #1
0
    static void Main()
    {
        var qc = int.Parse(Console.ReadLine());
        var qs = Array.ConvertAll(new bool[qc], _ => Read2());

        var dq = new DQ <int>();

        Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput())
        {
            AutoFlush = false
        });
        foreach (var(t, x) in qs)
        {
            if (t == 1)
            {
                dq.PushFirst(x);
            }
            else if (t == 2)
            {
                dq.PushLast(x);
            }
            else
            {
                Console.WriteLine(dq[x - 1]);
            }
        }
        Console.Out.Flush();
    }
Beispiel #2
0
    static void Main()
    {
        var(n, qc) = Read2();
        var a  = Read();
        var qs = Array.ConvertAll(new bool[qc], _ => Read3());

        var dq = new DQ <int>();

        foreach (var x in a)
        {
            dq.PushLast(x);
        }

        Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput())
        {
            AutoFlush = false
        });
        foreach (var(t, x, y) in qs)
        {
            if (t == 1)
            {
                (dq[x - 1], dq[y - 1]) = (dq[y - 1], dq[x - 1]);
            }
            else if (t == 2)
            {
                dq.PushFirst(dq.PopLast());
            }
            else
            {
                Console.WriteLine(dq[x - 1]);
            }
        }
        Console.Out.Flush();
    }
Beispiel #3
0
    static object Solve()
    {
        var s = Console.ReadLine();

        var q   = new DQ <char>();
        var rev = false;

        foreach (var c in s)
        {
            if (c == 'R')
            {
                rev = !rev;
            }
            else
            {
                if (rev)
                {
                    if (q.Length > 0 && q.First == c)
                    {
                        q.PopFirst();
                    }
                    else
                    {
                        q.PushFirst(c);
                    }
                }
                else
                {
                    if (q.Length > 0 && q.Last == c)
                    {
                        q.PopLast();
                    }
                    else
                    {
                        q.PushLast(c);
                    }
                }
            }
        }

        if (rev)
        {
            return(string.Join("", Enumerable.Range(0, q.Length).Select(i => q[i]).Reverse()));
        }
        else
        {
            return(string.Join("", Enumerable.Range(0, q.Length).Select(i => q[i])));
        }
    }
Beispiel #4
0
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());

        var r  = new List <int>();
        var dq = new DQ <int>();

        for (int k = n; k > 0; k--)
        {
            var q = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            if (q[0] == 0)
            {
                if (q[1] == 0)
                {
                    dq.PushFirst(q[2]);
                }
                else
                {
                    dq.PushLast(q[2]);
                }
            }
            else if (q[0] == 1)
            {
                r.Add(dq[q[1]]);
            }
            else
            {
                if (q[1] == 0)
                {
                    dq.PopFirst();
                }
                else
                {
                    dq.PopLast();
                }
            }
        }
        Console.WriteLine(string.Join("\n", r));
    }
Beispiel #5
0
    static void Main()
    {
        var n = int.Parse(Console.ReadLine());
        var s = Console.ReadLine();

        var q     = new DQ <int>();
        var stack = new Stack <int>();

        int RemoveAndGetFirst(int k)
        {
            for (int i = 0; i < k; i++)
            {
                stack.Push(q.PopFirst());
            }
            var r = q.PopFirst();

            for (int i = 0; i < k; i++)
            {
                q.PushFirst(stack.Pop());
            }
            return(r);
        }

        int RemoveAndGetLast(int k)
        {
            for (int i = 0; i < k; i++)
            {
                stack.Push(q.PopLast());
            }
            var r = q.PopLast();

            for (int i = 0; i < k; i++)
            {
                q.PushLast(stack.Pop());
            }
            return(r);
        }

        Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput())
        {
            AutoFlush = false
        });
        for (int i = 0; i < n; i++)
        {
            var c = s[i];

            if (c == 'L')
            {
                q.PushFirst(i + 1);
            }
            else if (c == 'R')
            {
                q.PushLast(i + 1);
            }
            else if (c < 'D')
            {
                var k = c - 'A';
                if (k < q.Length)
                {
                    Console.WriteLine(RemoveAndGetFirst(k));
                }
                else
                {
                    Console.WriteLine("ERROR");
                }
            }
            else
            {
                var k = c - 'D';
                if (k < q.Length)
                {
                    Console.WriteLine(RemoveAndGetLast(k));
                }
                else
                {
                    Console.WriteLine("ERROR");
                }
            }
        }
        Console.Out.Flush();
    }