![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]()
В наборе чисел найдите непрерывную неубывающую последовательность чисел
максимальной длины. Если подходящих последовательностей несколько, выведите первую из них. -maxint ≤ a ≤ maxint. Формат ввода: первая строка: n ≤ 300 000. Вторая строка: элементы набора чисел. Формат вывода: искомая последовательность. input.txt 7 5 1 2 3 4 3 7 output.txt 1 2 3 4 |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
![]()
а у тебя есть какие-нибудь мысли? или вообще не представляешь, как это решать?
НИУ СГУ им. Чернышевского
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
![]()
эту задачу надо решать жадно. т.е. пусть мы уже что-то набрали и стоим в индексе idx, тогда если a[idx + 1] >= a[idx], т.е. мы можем еще добавить в конец один эдемент, то нам никогда не выгодно его не добавлять, поэтому добавим его в конец. если же неубываемость нарушается, то нам нет смысла смотреть на предыдущие элементы, т.е. надо начинать новую последовательность
НИУ СГУ им. Чернышевского
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
![]()
l := 1; //1-ая нерассмотренаая ячейка
r := 1; anslen := 0; ansl := 0; ansr := 0; while(l <= n) do begin r := l; //начиная с этой позиции идем вправо пока можем while(r + 1 <= n && a[r + 1] >= a[r]) do inc(r); // пробуем обновить ответ if(r - l + 1 > anslen) then begin anslen := r - l + 1; ansl := l; ansr := r; end; //последняя рассмотренная позиция была r, поэтому новая ерассмотренная поцизия r + 1; l := r + 1; end; // теперь в ansl и ansr хранятся индексы ответа
НИУ СГУ им. Чернышевского
|
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.04.2012
Сообщений: 46
|
![]()
лол. я на паскале давно не писал! это логическое и.
в с++ && в паскале and
НИУ СГУ им. Чернышевского
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 21.05.2014
Сообщений: 121
|
![]()
Ну вроде бы готово только индексы у меня 6 и 7 ((
Код:
Последний раз редактировалось VladKB1; 12.06.2014 в 23:30. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел | maksim97maksim | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 09.04.2014 13:59 |
Дана последовательность целых чисел a1, a2, …an. Образовать новую последовательность, выбросив из исходной, те члены, которые равн | Мария74 | C++ Builder | 2 | 04.12.2013 23:09 |
Дана непустая последовательность вещественных чисел, оканчивающаяся числом 1000. Последовательность является неубывающей. | fanatloko | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.06.2013 14:25 |
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках | 'studentka' | Помощь студентам | 6 | 30.11.2011 18:35 |
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности | yuliyayuliya | Помощь студентам | 1 | 14.04.2011 06:30 |