using System; using System.IO; using System.Linq; using System.Collections.Generic; using System.Text; public class Program { public void Proc() { int[] qk = Reader.ReadLine().Split(' ').Select(a => int.Parse(a)).ToArray(); int q = qk[0]; int k = qk[1]; SortedDictionary first = new SortedDictionary(); SortedDictionary second = new SortedDictionary(); int itemCount = 0; StringBuilder ans = new StringBuilder(); for (int i = 0; i < q; i++) { long[] inpt = Reader.ReadLine().Split(' ').Select(a => long.Parse(a)).ToArray(); if(inpt[0]==1) { long num = inpt[1]; if(itemCount>=k-1) { if(second.Count>0&&num>=second.First().Key) { if (second.ContainsKey(num)) { second[num]++; } else { second.Add(num, 1); } } else { if(first.ContainsKey(num)) { first[num]++; } else { first.Add(num, 1); } long tmp = first.Last().Key; if(--first[tmp]<=0) { first.Remove(tmp); } if(second.ContainsKey(tmp)) { second[tmp]++; } else { second.Add(tmp, 1); } } } else { if(first.ContainsKey(num)) { first[num]++; } else { first.Add(num, 1); } } itemCount++; } else { if(second.Count<=0) { ans.AppendLine("-1"); } else { long num = second.First().Key; ans.AppendLine(num.ToString()); if(--second[num]<=0) { second.Remove(num); } itemCount--; } } } Console.Write(ans.ToString()); } public class Reader { private static StringReader sr; public static bool IsDebug = false; public static string ReadLine() { if (IsDebug) { if (sr == null) { sr = new StringReader(InputText.Trim()); } return sr.ReadLine(); } else { return Console.ReadLine(); } } private static string InputText = @" 10 3 1 3 1 4 1 0 2 1 5 1 2 2 1 10 2 2 "; } public static void Main(string[] args) { #if DEBUG Reader.IsDebug = true; #endif Program prg = new Program(); prg.Proc(); } }