using System.Collections.Generic;
class element : IComparable
public element(int number, int weight)
public int CompareTo(object el)
element myel = (element)el;
return this.number.CompareTo(myel.number);
public static void Main()
List<element> inputSequence = new List<element>
int combCount = (int)Math.Pow(2, inputSequence.Count) - 1;
List<List<element>> SubSequence = new List<List<element>>();
for (int i = 1; i < combCount + 1; i++)
SubSequence.Add(new List<element>());
for (int j = 0; j < inputSequence.Count; j++)
SubSequence.Last().Add(inputSequence[j]);
for(int i =0; i<SubSequence.Count; i++)
int subCount = SubSequence[i].Count;
while (removed ==0&&j<subCount-1)
if(SubSequence[i][j].CompareTo(SubSequence[i][j+1]) >= 0)
for (int i = 0; i < SubSequence.Count; i++)
SubSequence[i].ForEach(sub => weight += sub.weight);
if (weight > maxWeight) maxWeight = weight;
Console.WriteLine("max weight is: " + maxWeight);