using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace algorithmLPT { class Program { static void Main(string[] args) { int numberLoop = 0,minValueProcessors=0,indexMinValueProcessors=0,maxValueTasks; List lines = loadFile(); int processors = loadProcessors(lines); int[] sumProcessors = Enumerable.Repeat(0, processors).ToArray(); List tasks = loadTasks(lines); List> tasksInProcessors = new List>(); tasks.Sort((a, b) => -1 * a.CompareTo(b)); foreach (int task in tasks) { if (numberLoop < processors ) { if (numberLoop == 0) minValueProcessors = task; List test = new List(); test.Add(task); tasksInProcessors.Add(test); sumProcessors[numberLoop] +=task; if(sumProcessors[numberLoop] < minValueProcessors) { minValueProcessors = sumProcessors[numberLoop]; indexMinValueProcessors = numberLoop; } numberLoop++; } else { tasksInProcessors[indexMinValueProcessors].Add(task); sumProcessors[indexMinValueProcessors] += task; minValueProcessors = sumProcessors[0]; indexMinValueProcessors = 0; for(int i = 1 ; i < processors ; i++) { if (sumProcessors[i] < minValueProcessors) { minValueProcessors = sumProcessors[i]; indexMinValueProcessors = i; } } } } foreach (List a in tasksInProcessors) { foreach (int b in a) { Console.Write("{0} ", b); } Console.WriteLine(); } Console.WriteLine(); maxValueTasks = sumProcessors[0]; for (int i = 1; i < processors; i++) { if (maxValueTasks < sumProcessors[i]) maxValueTasks = sumProcessors[i]; } Console.WriteLine(maxValueTasks); System.Console.ReadLine(); } private static List loadFile() { List lines = new List(); Console.Write("Name file: "); string nameFile = Console.ReadLine(); try { lines = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "\" + nameFile + ".txt").ToList(); return lines; } catch (FileNotFoundException e) { Console.WriteLine("File not found "); Console.WriteLine("Press Enter to continue"); Console.ReadLine(); Environment.Exit(1); } return null; } private static List loadTasks(List lines) { List tasks = new List(); try { for (int i = 0; i < 2; i++) lines.RemoveAt(0); tasks = lines.ConvertAll(s => Int32.Parse(s)); //sumProcessors = Enumerable.Repeat(0, processors).ToArray(); return tasks; } catch (FormatException e) { Console.WriteLine("Bad Formatn Press Enter to continue"); Console.ReadLine(); Environment.Exit(1); } return null; } private static int loadProcessors(List lines) { List tasks = new List(); try { int processors = Convert.ToInt32(lines[0]); return processors; } catch (FormatException e) { Console.WriteLine("Bad Formatn Press Enter to continue"); Console.ReadLine(); Environment.Exit(1); } return 0; } } }