using System.Collections.Generic;
public static void Main()
string[] linesInFile = File.ReadAllLines("test.txt");
int lengthOfLines = linesInFile.Length;
Talk[] talks = new Talk[lengthOfLines];
for (int i = 0; i < lengthOfLines; i++)
talks[i] = new Talk {Name = linesInFile[i]};
string[] items = linesInFile[i].Trim().Split(' ');
int itemlenght = items.Length - 1;
string last = items[itemlenght].ToLower();
talks[i].Duration = last == "lightning" ? 5 : int.Parse(last.Replace("min", ""));
List<Talk> firstTrackAm = new List<Talk>();
List<Talk> firstTrackPm = new List<Talk>();
List<Talk> secondTrackAm = new List<Talk>();
List<Talk> secondTrackPm = new List<Talk>();
talks = talks.OrderByDescending(e => e.Duration).ToArray();
int firstTrackAmSum = 0, firstTrackPmSum = 0, secondTrackAmSum = 0, secondTrackPmSum = 0;
for (int i = 0; i < lengthOfLines; i++)
int duration = talks[i].Duration;
if (next == 0 && (firstTrackAmSum + duration) <= 180)
firstTrackAm.Add(talks[i]);
firstTrackAmSum += duration;
else if (next == 1 && (secondTrackAmSum + duration) <= 180)
secondTrackAm.Add(talks[i]);
secondTrackAmSum += duration;
else if (next == 2 && (firstTrackPmSum + duration) <= 240)
firstTrackPm.Add(talks[i]);
firstTrackPmSum += duration;
else if (next == 3 && (secondTrackPmSum + duration) <= 240)
secondTrackPm.Add(talks[i]);
secondTrackPmSum += duration;
int mins = Math.Max(firstTrackPmSum, secondTrackPmSum);
if (mins < 180) mins = 180;
DateTime netWorkingEvent = DateTime.Today.AddHours(13).AddMinutes(mins);
Console.WriteLine("Track 1:");
DateTime dt = DateTime.Today.AddHours(9);
foreach (Talk talkTrack in firstTrackAm)
Console.WriteLine("{0} {1}", dt.ToString("hh:mmtt"), talkTrack.Name);
dt = dt.AddMinutes(talkTrack.Duration);
Console.WriteLine("12:00PM Lunch");
dt = DateTime.Today.AddHours(13);
foreach (Talk talkTime in firstTrackPm)
Console.WriteLine("{0} {1}", dt.ToString("hh:mmtt"), talkTime.Name);
dt = dt.AddMinutes(talkTime.Duration);
Console.WriteLine("{0} Networking Event", netWorkingEvent.ToString("hh:mmtt"));
Console.WriteLine("\nTrack 2:");
dt = DateTime.Today.AddHours(9);
foreach (Talk talkTime in secondTrackAm)
Console.WriteLine("{0} {1}", dt.ToString("hh:mmtt"), talkTime.Name);
dt = dt.AddMinutes(talkTime.Duration);
Console.WriteLine("12:00PM Lunch");
dt = DateTime.Today.AddHours(13);
foreach (Talk talkTime in secondTrackPm)
Console.WriteLine("{0} {1}", dt.ToString("hh:mmtt"), talkTime.Name);
dt = dt.AddMinutes(talkTime.Duration);
Console.WriteLine("{0} Networking Event", netWorkingEvent.ToString("hh:mmtt"));
public string Name { get; set; }
public int Duration { get; set; }