Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизСкорость :( Найти похожие ветки
← →
Легионер (2004-01-28 17:13) [0]Как можно увеличить быстроту работы слудющего кода?
type Myarray=array[1..26000]of integer;
Pmyarray=^Myarray;
var a,b:Pmyarray;
x,x1:integer;
i,indexA,indexB,k,count:longint;
begin
new(a);
new(b);
Readln(indexA);
count:=1;
for i:=1 to IndexA do
begin
if i=1 then
begin
readln(a^[1]);
end
else
begin
readln(indexB);
if count>25000 then
begin
if b^[count-25000]<>IndexB then
begin
inc(count);
b^[count-25000]:=IndexB;
end;
end
else
begin
if a^[count]<>IndexB then
begin
inc(count);
a^[count]:=IndexB;
end;
end;
end;
end;
readln(indexB);
for i:=1 to IndexB do
begin
readln(x);
for k:=1 to Count do
begin
if k>25000 then x1:=b^[k-25000]
else x1:=a^[k];
if x+x1>10000 then break;
if X1+x=10000 then
begin
Writeln("YES");
Halt;
end;
end;
end;
Writeln("NO");
dispose(a);
dispose(b);
end.
← →
Sandman25 (2004-01-28 17:15) [1]Например, вытащить проверку из цикла:
for i:=1 to IndexA do
begin
if i=1 then
← →
Sandman25 (2004-01-28 17:17) [2]Вместо halt лучше goto на первый dispose.
← →
Sandman25 (2004-01-28 17:20) [3]Это не та задача, где один массив упорядочен по возрастанию, а другой по убыванию? Если так, то нужно избавляться от вложенного for - заменять его на while.
← →
Легионер (2004-01-28 20:24) [4]А разве скорость от этого увеличится?
Поменял все то, что Вы сказали. стало чуть быстрее работать:) Может еще что можно ?
← →
Юрий Зотов (2004-01-28 20:34) [5]А зачем здесь косвенная адресация? Почему бы не объявить A и B, как сами массивы, а не указатели на них. Тоже должно ускорить.
← →
Легионер (2004-01-28 21:01) [6]Не получится, т.к. все это в Паскале!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.027 c