CpLibrary

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub fairy-lettuce/CpLibrary

:heavy_check_mark: Set<T> (Library Checker: OrderedSet) (CpLibrary.Verify/Collections/OrderedSet.cs)

Depends on

Code

using CpLibrary.Collections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CpLibrary.Verify.Collections
{
	// competitive-verifier: document_title Set<T> (Library Checker: OrderedSet)
	internal class SetTestOrderedSet : CompetitiveVerifier.ProblemSolver
	{
		public override string Url => "https://judge.yosupo.jp/problem/ordered_set";
		public override void Solve()
		{
			var sr = new Scanner(new StreamReader(Console.OpenStandardInput()));

			var (n, q) = sr.ReadValue<int, int>();
			var a = sr.ReadIntArray(n);
			var s = new Set<int>(a);
			for (int i = 0; i < q; i++)
			{
				var (query, x) = sr.ReadValue<int, int>();
				if (query == 0)
				{
					if (s.Contains(x)) { }
					else s.Add(x);
				}
				if (query == 1)
				{
					if (s.Contains(x)) s.Remove(x);
				}
				if (query == 2)
				{
					if (s.Count < x) Console.WriteLine(-1);
					else Console.WriteLine(s[x - 1]);
				}
				if (query == 3)
				{
					if (s.Count == 0)
					{
						Console.WriteLine(0);
						continue;
					}
					var idx = s.UpperBound(x);
					Console.WriteLine(idx);
				}
				if (query == 4)
				{
					if (s.Count == 0)
					{
						Console.WriteLine(-1);
						continue;
					}
					var idx = s.UpperBound(x);
					if (idx <= 0) Console.WriteLine(-1);
					else
					{
						Console.WriteLine(s[idx - 1]);
					}
				}
				if (query == 5)
				{
					if (s.Count == 0)
					{
						Console.WriteLine(-1);
						continue;
					}
					var idx = s.LowerBound(x);
					if (idx >= s.Count) Console.WriteLine(-1);
					else
					{
						Console.WriteLine(s[idx]);
					}
				}
			}
		}
	}
}

Test cases

Env Name Status Elapsed Memory
example_00 :heavy_check_mark: AC 64 ms 29 MB
example_01 :heavy_check_mark: AC 64 ms 29 MB
max_random_00 :heavy_check_mark: AC 926 ms 47 MB
max_random_01 :heavy_check_mark: AC 1068 ms 47 MB
max_random_02 :heavy_check_mark: AC 330 ms 48 MB
max_random_03 :heavy_check_mark: AC 316 ms 47 MB
max_random_04 :heavy_check_mark: AC 1195 ms 47 MB
max_random_05 :heavy_check_mark: AC 1181 ms 47 MB
max_random_06 :heavy_check_mark: AC 1161 ms 47 MB
max_random_07 :heavy_check_mark: AC 1178 ms 47 MB
max_random_08 :heavy_check_mark: AC 955 ms 47 MB
max_random_09 :heavy_check_mark: AC 1040 ms 47 MB
max_random_10 :heavy_check_mark: AC 446 ms 48 MB
max_random_11 :heavy_check_mark: AC 273 ms 47 MB
max_random_12 :heavy_check_mark: AC 1169 ms 47 MB
max_random_13 :heavy_check_mark: AC 1240 ms 47 MB
max_random_14 :heavy_check_mark: AC 1187 ms 47 MB
max_random_15 :heavy_check_mark: AC 1208 ms 47 MB
max_random_16 :heavy_check_mark: AC 1473 ms 124 MB
max_random_17 :heavy_check_mark: AC 1612 ms 125 MB
max_random_18 :heavy_check_mark: AC 1134 ms 124 MB
max_random_19 :heavy_check_mark: AC 929 ms 123 MB
max_random_20 :heavy_check_mark: AC 1720 ms 124 MB
max_random_21 :heavy_check_mark: AC 1680 ms 124 MB
max_random_22 :heavy_check_mark: AC 1665 ms 123 MB
max_random_23 :heavy_check_mark: AC 1679 ms 125 MB
max_random_24 :heavy_check_mark: AC 1496 ms 124 MB
max_random_25 :heavy_check_mark: AC 1630 ms 124 MB
max_random_26 :heavy_check_mark: AC 1121 ms 123 MB
max_random_27 :heavy_check_mark: AC 951 ms 123 MB
max_random_28 :heavy_check_mark: AC 1704 ms 124 MB
max_random_29 :heavy_check_mark: AC 1680 ms 125 MB
max_random_30 :heavy_check_mark: AC 1832 ms 124 MB
max_random_31 :heavy_check_mark: AC 1782 ms 124 MB
small_00 :heavy_check_mark: AC 804 ms 47 MB
small_01 :heavy_check_mark: AC 816 ms 47 MB
small_02 :heavy_check_mark: AC 805 ms 47 MB
Back to top page