Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизДинам. списки Найти похожие ветки
← →
Chcnger (2004-03-21 13:23) [0]Здравствуйте!
Никак не могу понять в чем ошибка след кода
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
type Myarray=array[1..25000]of integer;
pArray=^Myarray;
PList=^Tlist;
Tlist=record
prev:Plist;
b:integer;
end;
var a:Parray;
i,t,n,j,index,MAX,max1:integer;
last:plist;
procedure Add(b:integer);
var TempList:plist;
begin
inc(index);
if b>max1 then max1:=b;
new(TempList);
templist^.b:=b;
templist^.prev:=last;
last:=templist;
end;
procedure TransCycle;
var TempList,TempList1:Plist;
begin
A^[1]:=index;
for i:=1 to Max1 do
BEGIN
t:=0;
templist:=Last;
while templist^.prev<>nil do
begin
templist1:=templist;
templist:=templist^.prev;
if templist^.prev^.b>i then
BEGIN
INC(t);
END;
end;
dec(t);
a^[i+1]:=t;
END;
templist^.prev:=nil;
tempList^.prev:=Last;
Last:=TempList;
end;
begin
last:=nil;
New(a);
read(n);
index:= -1;
fillchar(a^,sizeof(a^),0);
max:=-10;
max1:=-10;
for i:=1 to n do
begin
read(a^[i]);
if a^[i]>max then max:=a^[i];
end;
add(n);
for i:=1 to max do
begin
t:=0;
for j:=1 to n do
begin
if a^[j]>i then inc(t);
end;
add(t);
end;
fillchar(a^,sizeof(a^),0);
TransCycle;
i:=1;
While A^[i]>0 do
begin
Writeln(a^[i]);
inc(i);
end;
dispose(a);
end.
Вроде все работает но при прохождении онлайн проверки пишет ошибку access violation.
А вот сама задача
:
Саботаж
Ограничение времени: 2.5 секунды
Ограничение памяти: 1 000 КБ
Седьмой год длится жестокая, кровопролитная Галактическая Война. Лео Хао был в первых рядах добровольцев, поднявшихся, как один, на защиту Земли. Четыре года в Звездном десанте что-то да значат… Лео по меркам этой войны еще счастливчик. Ему удалось выжить в рукопашном бою с меклонцем. Пять месяцев в госпитале, потерянная левая нога и правый глаз… Увольнение из Десанта. Земля. Дом. Родные.
Лео повезло вдвойне. Выйдя из этой мясорубки он сумел вернуться к нормальной жизни. Устроился программистом в ‘Ю.С. Роботс’, занимался программированием защитных установок нулевого уровня. Но и на Земле Лео не мог чувствовать, что вокруг свои – люди, друзья. Всего лишь пару дней назад, благодаря случайности, обнаружилось, что один из парней, работавших вместе с Лео – не человек. Точнее, физически он еще был человеком, но человеческим разумом уже не обладал. Его свободный разум был покорен паразитом-дарлоксианином – представителем одной из самых мерзких рас, известных Человечеству.
Сейчас Лео погружен в исследования кода, написанного шпионом. Боже! Ужасный, уродливый, глючный, неэффективный код. Сколько человеческих жизней уже стоили эти строчки кода! Сколько атак не отражено из-за них. Необходимо как можно скорее его переписывать! Если бы это было так просто! Будь проклят изощренный ум сына Дарлока!
Сейчас Лео исследует следующую функцию. На ее вход поступает массив натуральных чисел. Функция организует следующую процедуру: на принтер выводит количество чисел в массиве, далее количество чисел, строго больших одного, потом количество чисел строго больше двух, потом трех, и т.д., пока не получится 0 (он на принтер не выводится). Далее листок из лотка принтера с помощью механического манипулятора попадает в сканер. Набор чисел, напечатанных на листочке сканируется и снова повторяется та же операция. Получается новый листочек, записанные на нем числа сканируются, записываются в массив и возвращаются – это и есть результат работы функции.
Пример. Пусть на вход злосчастной функции пришли три числа: 4 1 6
На принтер будут выведены: 3 2 2 2 1 1
После сканирования и повторного применения будут выведены: 6 4 1
Итак, результат работы функции: массив из трех чисел 6 4 1
Лео чувствует, что что-то тут нечисто. Ваша цель – написать программу, которая сможет подменить функцию, написанную Дарлоксианином, но будет работать намного быстрее!
Исходные данные
В первой строчке входа находится число N (0 <= N <= 25000). Далее находятся N строчек, в каждой из которых находится натуральное число pi (1 <= pi <= 25000).
Результат
В выходе должны содержаться результат работы функции, эквивалентной написанной Дарлоксианином.
Пример исходных данных
3
4
1
6
Пример результата
6
4
1
Из -за чего это может быть?
В чем ошибка? Что неправильно делаю?
← →
Chcnger (2004-03-21 14:49) [1]Ну высказывайте хоть какие-нибудь идеи!
← →
KSergey © (2004-03-21 14:59) [2]А кому-то надо читать вопрос более, чем из 10 строк? Тем более код?? Да еще "условие", процентов на 80 из воды?
← →
Chcnger (2004-03-21 15:00) [3]Мда
← →
YurikGl © (2004-03-21 15:00) [4]У меня хватило терпения задание прочитать, но после понял, что в коде надо разбираться и разбираться.
← →
KSergey © (2004-03-21 15:01) [5]Впрочем, идею выскажу: в коде ошибка.
полегчало? ;)
← →
Chcnger (2004-03-21 15:03) [6]:D
Хорошее начало :)
← →
TUser © (2004-03-21 16:22) [7]А что значит "при прохождении online проверки"?
← →
Chcnger (2004-03-21 18:07) [8]Проверак на acm.timus.ru
Эта задача от туда!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c