Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2014, 21:40   #1
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
Восклицание неубывающую последовательность чисел максимальной длины. Не проходит 11 тест (TurboPascal)

В наборе чисел найдите непрерывную неубывающую последовательность чисел
максимальной длины. Если подходящих последовательностей несколько, выведите первую из
них. -maxint ≤ a[i] ≤ maxint.

Формат ввода: первая строка: n ≤ 300 000. Вторая строка: элементы набора чисел.
Формат вывода: искомая последовательность.

input.txt
7
5 1 2 3 4 3 7
output.txt
1 2 3 4


Задача не проходит 11 тест (11 тест очень большой не влазит в макс. предел, там n=300000 и потом следует 300000 больших чисел) вот решение:

Код:
var
 n,i,l,r,z,x,c: longint;
 a: array [1..32000] of integer;
begin
 assign(input,'input.txt');
 reset(input);
 assign(output,'output.txt');
 rewrite(output);

 read(n);
 for i:=1 to n do read(a[i]);

 l:=1;
 r:=1;
 while (l <= n) do
 begin
  r:=l;
  while (r+1 <= n) and (a[r+1] >= a[r]) do inc(r);
  if (r-l+1 > z) then
  begin
   z:=r-l+1;
   x:=l;
   c:=r;
  end;
  l:=r+1;
 end;
 for i:=x to c-1 do write(a[i],' ');
 writeln(a[c]);
end.
Большое спасибо всем тем кто поможет!

Последний раз редактировалось VladKB1; 14.06.2014 в 21:50.
VladKB1 вне форума Ответить с цитированием
Старый 14.06.2014, 21:44   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
a: array [1..32000] of integer;
А n может быть 300000.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.06.2014, 21:49   #3
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
a: array [1..32000] of integer;
А n может быть 300000.
нет это я знал, я не знаю как это сделать когда ставишь массив до 300000
то выдаёт ошибку. Буду рад если поможете
VladKB1 вне форума Ответить с цитированием
Старый 14.06.2014, 22:10   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Стрелка

Цитата:
нет это я знал, я не знаю как это сделать когда ставишь массив до 300000
то выдаёт ошибку.
Никак.
К сожалению, в Паскале (судя по всему используется именно он) максимальный размер массива весьма ограничен.
Подробнее можете посмотреть здесь: Turbo Pascal - Максимальная размерность одномерного массива .
Если есть необходимость работы с большими числами, то лучше сменить платформу.
Streletz вне форума Ответить с цитированием
Старый 14.06.2014, 22:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Слишком большой массив? На то и расчет задачи, чтоб без массивов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2014, 22:13   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Можно попробовать использовать динамически выделяемую память:
Код:
type
  arr = array [1..1] of integer;
var
  p : ^arr;
  n, i : integer;
begin
  read(n);
  getmem(p, n * sizeof(integer));
  for i := 1 to n do read(p^[i]);
  for i := 1 to n do write(p^[i], ' ');
  freemem(p, n * sizeof(integer));
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.06.2014, 22:15   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
На то и расчет задачи, чтоб без массивов.
Ставлю на то, что без массивов задаче не решаема! (ну разумеется, можно поизвращаться и решить задачу рекурсией..)

А массив-то вовсе не большой.. это ограничея турбо.. А сам массив будет занимать (даже при Integer'e = 4 байта) всего один мегабайт с хвостиком..
Poma][a вне форума Ответить с цитированием
Старый 14.06.2014, 22:40   #8
VladKB1
Форумчанин
 
Регистрация: 21.05.2014
Сообщений: 121
Печаль

Всем спасибо конечно за идеи, но задачу можно решить массивом уже много кто так сделал с этой задачей. Кто ходил в кружок "быстрого программирования", а у меня не получается вот и хотел спросить...
VladKB1 вне форума Ответить с цитированием
Старый 14.06.2014, 22:55   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Что с 11 тестом? Неправильный ответ? Слишком много времени\памяти? Какая-то ошибка?

Еще раз.. Поставь размер массива 300000 и отправь.. а сам скачай Free Pascal и радуйся..
Poma][a вне форума Ответить с цитированием
Старый 14.06.2014, 23:06   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
кружок "быстрого программирования"
Какой ужос... А потом такие вот "быстрые программисты" пишут быстрые программы для всяких военных машин, которые хочешь не хочешь а попадать будут куда угодно только не в цель разрушая наши дома...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непрерывная неубывающая последовательность чисел (TurboPascal) VladKB1 Помощь студентам 17 13.06.2014 00:06
поиск последовательности элементов максимальной длины в массиве Alkcatras Visual C++ 0 05.01.2013 18:43
Задача со строкой (поиск слова максимальной длины) TheAlina Помощь студентам 1 13.05.2012 23:34
Слово максимальной длины Broken Angel Помощь студентам 2 06.01.2011 15:14
Палиндром максимальной длины (язык Pelles C) Kotik Wasil Помощь студентам 2 13.12.2010 11:32