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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 09:24   #1
Lion_paint
 
Регистрация: 27.02.2009
Сообщений: 7
Печаль не получается разобраться в коде ! разъясните пожалуйста! код внутри!

Код:
const
  maxn=32000;

var
  a:array [1..1000] of longint;
  n,otv,tmp:longint;

procedure qsort(l,r:longint);
var
  i,j,t:longint;
begin
  i:=l;j:=r;t:=a[(i+j) div 2];
  repeat
    while a[i]<t do inc(i);
    while a[j]>t do dec(j);
    if i<=j then
    begin
      tmp:=a[i];a[i]:=a[j];a[j]:=tmp;
      inc(i);
      dec(j);
    end;
  until i>j;
  if i<r then qsort(i,r);
  if j>l then qsort(l,j);
end;

procedure init;
var
  i:longint;
begin
  read(n);
  for i:=1 to n do read(a[i]);
  qsort(1,n);
end;

procedure solve;
var i,sum:longint;
begin
  sum:=0;
  for i:=1 to n do
  begin
    inc(sum,a[i]);
    if (n-i)=sum then
    begin
      otv:=sum;
      break;
    end
    else if sum>(n-i) then
    begin
      otv:=n-i;
      break;
    end;
  end;
end;

begin

  init;
  solve;
  writeln(otv);

end.
Lion_paint вне форума Ответить с цитированием
Старый 16.05.2009, 09:29   #2
Lion_paint
 
Регистрация: 27.02.2009
Сообщений: 7
По умолчанию

Входной файл: 345.in
Выходной файл: 345.out
Ограничение по времени: 234 сек.
Ограничение по памяти: 123 Мб
Максимальный балл: 345 Cкачать условие(doc, rtf, rar)


У кузнеца имеется N цепей, каждая цепь состоит из колец. В одной цепи может быть от 1 до 32000 колец.

Кузнецу необходимо соединить все цепи в одну большую цепь. Для этого он может выполнять следующие операции: расклепать кольцо цепи (расклепанное кольцо можно снимать с цепи и одевать на цепь) и склепать кольцо.

Требуется определить, какое минимальное количество колец кузнецу необходимо расклепать и склепать, чтобы соединить все имеющиеся у него цепи в одну. Например, для трех цепей из трех колец каждая, необходимо расклепать и склепать два кольца.

Входные данные
В первой строке входного файла находится количество цепочек - целое число N (1 &le N &le 32000).

В следующих N строках дано количество колец в каждой цепочке - по одному числу в строке.

Выходные данные
В выходной файл следует вывести одно целое число - количество расклепанных/склепанных колец.
Lion_paint вне форума Ответить с цитированием
Старый 16.05.2009, 09:30   #3
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Код:
procedure qsort(l,r:longint);
var
  i,j,t:longint;
begin
  i:=l;j:=r;t:=a[(i+j) div 2];
  repeat
    while a[i]<t do inc(i);
    while a[j]>t do dec(j);
    if i<=j then
    begin
      tmp:=a[i];a[i]:=a[j];a[j]:=tmp;
      inc(i);
      dec(j);
    end;
  until i>j;
  if i<r then qsort(i,r);
  if j>l then qsort(l,j);
end;
Это алгоритм быстрой сортировки.. поищи в гугле описание...
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться в коде fate Общие вопросы по Java, Java SE, Kotlin 5 17.03.2009 22:10
разъясните пожалуйста ситуацию с массивом: =|винтик|= Помощь студентам 2 20.01.2009 19:49