コード例 #1
0
        private string Del(string arg, SplayTree tree)
        {
            long i = Convert(long.Parse(arg));

            tree.Delete(i);
            return(null);
        }
コード例 #2
0
        private string Add(string arg, SplayTree tree)
        {
            long i = Convert(long.Parse(arg));

            tree.Insert(i);
            return(null);
        }
コード例 #3
0
        private string Sum(string arg, SplayTree tree)
        {
            var  toks = arg.Split();
            long l    = Convert(long.Parse(toks[0]));
            long r    = Convert(long.Parse(toks[1]));

            long result = tree.RangeSum(l, r);

            X = result;

            return(result.ToString());
        }
コード例 #4
0
        static void Main(string[] args)
        {
            SplayTree ss = new SplayTree();

            ss.Find(1);
            ss.Insert(1);
            ss.Find(1);
            ss.Insert(2);

            ss.Insert(1000000000);
            ss.Find(1000000000);
            ss.Delete(1000000000);
            ss.Find(1000000000);

            Console.WriteLine();
            Console.Read();
        }
コード例 #5
0
        private string Find(string arg, SplayTree tree)
        {
            long i    = Convert(int.Parse(arg));
            var  temp = tree.Find(i);

            if (temp == null)
            {
                return("Not found");
            }
            if (temp.Key == i)
            {
                return("Found");
            }
            else
            {
                return("Not found");
            }
        }
        private string Find(string arg, SplayTree splayTree)
        {
            long i          = Convert(int.Parse(arg));
            var  findResult = splayTree.Find(i);

            if (findResult != null)
            {
                if (findResult.Key == i)
                {
                    return("Found");
                }
                else
                {
                    return("Not found");
                }
            }
            return("Not found");
        }
        public string[] Solve(string[] lines)
        {
            splayTree = new SplayTree();
            X         = 0;
            Data      = new List <long>();
            List <string> result = new List <string>();

            foreach (var line in lines)
            {
                char   cmd    = line[0];
                string args   = line.Substring(1).Trim();
                var    output = CommandDict[cmd](args, splayTree); //
                if (null != output)
                {
                    result.Add(output);
                }
            }
            return(result.ToArray());
        }
        private string Sum(string arg, SplayTree splayTree)
        {
            var  toks = arg.Split();
            long l    = Convert(long.Parse(toks[0]));
            long r    = Convert(long.Parse(toks[1]));

            long sum = 0;

            var lowerBound = splayTree.Find(l);

            while (!(lowerBound.Key > r))
            {
                sum       += lowerBound.Key;
                lowerBound = splayTree.Next(lowerBound);
            }


            X = sum;

            return(sum.ToString());
        }