Помогите написать программу на C++ ! PLEASEE!

C++ учеба Программирование Алгоритмы компиляция

Среди заданного множества отрезков прямой с целочисленными координатами концов [Li, Ri] необходимо выбрать подмножество наименьшей мощности, целиком покрывающее отрезок [0, M], где M – натуральное число.
Исходные данные
В первой строке указана константа M (1 ≤ M ≤ 5000). В последующих строках перечислены пары чисел Li и Ri (abs(Li), abs(Ri) ≤ 50000), каждая пара с новой строки, числа в парах отделены друг от друга одним или несколькими пробелами. Список завершается парой нулей. i ≤ 100000.
Результат
Программа должна формировать в первой строке требуемое минимальное число отрезков из исходного множества, необходимое для покрытия отрезка [0, M]. Далее должен следовать список покрывающего подмножества, упорядоченный по возрастанию координат левых концов отрезков. Список отрезков выводится в том же формате, что и во входe, завершающую пару нулей выводить не следует.
Если покрытие отрезка [0, M] исходным множеством отрезков [Li, Ri] невозможно, то соледует вывести единственную фразу "No solution". ! ПОМОГИТЕ ПЛИЗЗ ! НИКАК НЕ ВЫХОДИТ!
Ответы:
Олимпиадная задача, сложная, здесь вам её, скорее всего, не решат.
Покажи ход твоих рассуждений?
Что-то ты по этой задаче должен думать?
PowerShell:
Get-Content Data.txt|&{
   param([Parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true)][String[]]$Data)
   begin{
       $First=$true
       $ParsedData=New-Object Collections.ArrayList
       $End=$false
   }
   process{
       $Data-split"\r?\n"|ForEach-Object {
           $_=$_.Trim()
           if($_){$_}
       }|ForEach-Object {
           if($End){return}
           if($First){
               $M=[Int]$_
               if(!$?){throw "Неверный формат"}
               $First=$false
               return
           }
           $Item=$_-split" +"
           if($Item.Count-ne2){throw "Неверный формат"}
           $L=[Int]$Item[0]
           if(!$?){throw "Неверный формат"}
           $R=[Int]$Item[1]
           if(!$?){throw "Неверный формат"}
           if($L-eq0-and$R-eq0){
               $End=$true
               return
           }
           if($R-lt$L){throw "Неверный формат"}
           $Item=New-Object PSObject -Property @{L=$L;R=$R}
           $ParsedData.Add($Item)|Out-Null
       }
   }
   end{
       if(!($End)){throw "Неверный формат"}
       $Result=New-Object Collections.ArrayList
       $From=0
       do{
           $ParsedData=@($ParsedData|Where-Object {$_.R-gt$From})
           $Temp=@($ParsedData|Where-Object {$_.L-le$From})
           if(!($Temp.Count)){
               "No solution"
               return
           }
           $From=($Temp|Measure-Object R -Maximum).Maximum
           $Result.Add(($Temp|Where-Object {$_.R-eq$From}|Select-Object -First 1))|Out-Null
       }until($From-ge$M)
       $Result.Count
       $Result|Sort-Object L|ForEach-Object {"$($_.L) $($_.R)"}
   }
}


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.