var firstInput = Console.ReadLine()
.Select((i) => int.Parse(i))
var cpuCount = firstInput[0];
var taskCount = firstInput[1];
var cpusEnergy = Console.ReadLine()
.Select((i) => new Cpu(int.Parse(i)))
var sortedCpus = cpusEnergy
for (int i = 0; i < taskCount; i++)
var taskInfo = Console.ReadLine()
.Select((t) => int.Parse(t))
var taskRemainingTime = taskInfo[1];
foreach (var cpu in sortedCpus)
cpu.SetCurrentTime(time);
cpu.SetTask(taskRemainingTime);
foreach (var cpu in sortedCpus)
cpu.SetCurrentTime(1000000001);
Console.WriteLine(Cpu.CommonEnergyLoss);
public int TaskRemainingTime;
public static long CommonEnergyLoss;
public void SetCurrentTime(int time)
var workTime = time - LastTime;
if (workTime < TaskRemainingTime)
CommonEnergyLoss += workTime * Cost;
TaskRemainingTime -= workTime;
if (workTime >= TaskRemainingTime)
CommonEnergyLoss += TaskRemainingTime * Cost;
public void SetTask(int time)
TaskRemainingTime = time;
return TaskRemainingTime == 0;