Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.045 c
14-1082046157
Gero
2004-04-15 20:22
2004.04.11
Потверждение в bat нике


7-1080123240
Петро
2004-03-24 13:14
2004.04.11
Проверка подлинности пароля.


1-1082555935
ser_ega
2004-04-21 17:58
2004.04.11
Stringgrid


4-1075637281
8ung
2004-02-01 15:08
2004.04.11
Как сменить иконку у exe файла?


14-1082406381
Дадиц
2004-04-20 00:26
2004.04.11
помогите вспомнить песню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский