using System.Collections.Generic;
public string id{get;set;}
public string description{get;set;}
public double length{get;set;}
public double height{get;set;}
public double width{get;set;}
public double volume{get;set;}
public string id{get;set;}
public double length{get;set;}
public double height{get;set;}
public double width{get;set;}
public double volume{get;set;}
public int quantity{get;set;}
public static double totalquantity = 0;
public static void Main()
List<double> boxes = new List<double>();
List<double> products = new List<double>();
List<double>remainingproducts = new List<double>();
for(int i = 0; i < boxes.Count; i++)
if(i == 0 && remainingproducts.Count == 0)
Console.WriteLine(largestFitFirst(boxes[i], products, ref remainingproducts) + " BOX REQUIRED OF VOLUME " + boxes[i]);
else if(i > 0 && remainingproducts.Count == 0)
Console.WriteLine(largestFitFirst(boxes[i], remainingproducts, ref remainingproducts) + " BOX REQUIRED OF VOLUME " + boxes[i]);
static int largestFitFirst(double boxvolume, List<double> products, ref List<double> remainingproducts)
List<double>usedproducts = new List<double>();
double remboxspace = boxvolume;
for(int i=0; i < products.Count; i++)
if(i == 0 && products[i] > remboxspace)
Console.WriteLine("Box could not accomodate");
else if (i!= 0 && products[i] > remboxspace)
Console.WriteLine("Box " + boxvolume + " ran out of space, Moving to next box");
else if(products[i] < remboxspace)
remboxspace = remboxspace - products[i];
usedproducts.Add(products[i]);
if(i+1 == products.Count)
remainingproducts.Clear();
remainingproducts = products.Except(usedproducts).ToList();
if(remainingproducts.Count > 0)
Console.WriteLine("Remaining Items...");
foreach(double value in remainingproducts)
Console.WriteLine(value);
Console.WriteLine("All remaining Items have been added to the box " + boxvolume);