using System.Collections.Generic;
public static void Main()
var scenario1 = new List<double>(){70,63,55,52,51,49,49,48,48,48,46,45,45,44,43,42,42,42,42,42,41,40,39,39,39,39,38,36,35,33,33,31,31,31,30,30,29,28,28,28,27,27,26,26,25,24,24,13};
var scenario2 = new List<double>(){89,77,74,72,71,70,66,65,65,61,61,58,58,57,55,55,55,54,54,52,52,52,52,51,47,45,44,44,42,41,38,37,37,36,35,35,34,33,32,30,29,29,28,27,26,23,10,5};
var scenario3 = new List<double>(){11,18,5,7,15,32,20,10,13,8,19,58,58,57,55,55,55,54,54,52,52,52,52,51,47,45,44,42,41,38,37,37,35,38,48,46,50,49,43,50,43,50,49,22,21,28,32,25};
var scenario4 = new List<double>(){50,14,27,25,6,37,29,11,15,49,21,18,24,10,18,1,18,15,49,44,22,11,21,37,20,39,15,26,19,35,13,42,39,38,13,8,1,42,5,24,5,42,31,15,35,50,43,10};
foreach(var concentration in scenario3)
if(concentration >= 18.5)
pool.Samples.Add(new Sample
Concentration = concentration,
Volume = 500/concentration
pool.Samples.Add(new Sample
Concentration = concentration,
Volume = 350/concentration
foreach(var sample in pool.Samples.OrderByDescending(x => x.Concentration))
if(pool.PoolVolume + sample.Volume <= 600)
pool.AcceptedSamples.Add(sample);
pool.PoolVolume += sample.Volume;
pool.FailedSamples.Add(sample);
Console.WriteLine("Accepted Samples Count");
Console.WriteLine(pool.AcceptedSamples.Count());
Console.WriteLine("Failed Samples Count");
Console.WriteLine(pool.FailedSamples.Count());
Console.WriteLine(string.Empty);
Console.WriteLine("Total Volume");
Console.WriteLine(pool.PoolVolume);
Console.WriteLine(string.Empty);
Console.WriteLine("Accepted Samples");
pool.AcceptedSamples.Dump();
Console.WriteLine("Failed Samples");
pool.FailedSamples.Dump();
public double Concentration {get; set;}
public double Target {get; set;}
public double Volume {get; set;}
public List<Sample> Samples {get; set;}
public List<Sample> FailedSamples {get; set;}
public List<Sample> AcceptedSamples {get; set;}
public double PoolVolume {get; set;}
Samples = new List<Sample>();
AcceptedSamples = new List<Sample>();
FailedSamples = new List<Sample>();