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<string> lines = loadFile();
int processors = loadProcessors(lines);
int[] sumProcessors = Enumerable.Repeat(0, processors).ToArray();
List<int> tasks = loadTasks(lines);
List
<List
<int>> tasksInProcessors
= new List
<List
<int>>();
tasks.Sort((a, b) => -1 * a.CompareTo(b));
foreach (int task in tasks)
{
if (numberLoop < processors )
{
if (numberLoop == 0)
minValueProcessors = task;
List
<int> test
= new List
<int>();
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<int> 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<string> loadFile()
{
List
<string> lines
= new List
<string>();
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<int> loadTasks(List<string> lines)
{
List<int> tasks = new List<int>();
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<string> lines)
{
List<int> tasks = new List<int>();
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;
}
}
}