using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
var test = new List<int> { -2, 4, -1, 3, -5, 10, 4, -2, 1, -5, -5, -5};
var test2 = RemoveAll(test, x => x < 0);
Console.WriteLine(string.Join(" ", test));
Console.WriteLine(string.Join(" ", test2));
public static List<T> RemoveAll<T>(List<T> input, Func<T,bool> condition)
List<T> removedEntries = new List<T>();
for(int i = 0; i < input.Count - offset; i++)
while(i < input.Count - offset && condition.Invoke(input[i + offset]))
removedEntries.Add(input[i + offset]);
Console.WriteLine("i="+i+", offset="+offset);
if(i < input.Count - offset)
input[i] = input[i+offset];
input.RemoveRange(input.Count - offset, offset);