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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2008, 14:09   #1
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию Задача о выборах

Помогите пожалуйсто, найти ошибку в решении. Сайт online проверки решений задач выдает Wrong Answer(Неверный ответ) на втором тесте. Здесь условия

http://acm.timus.ru/problem.aspx?space=1&num=1025

Код:
var
n,i,i1,max,v,k:integer;
a:array [1..100] of integer;{массив для чисел}
z:array [1..100] of integer;{сюда будем записывать минимальное число голос, необходимых для победы в группе}
begin
readln(n);

{проверка условия n<101}
if n>101 then
  halt;
{----------------------}

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


{---------------------}
for i:=1 to n do
   z[i]:=trunc(a[i]/2)+1;
{записываем минимальное число голос, необходимых для победы в группе}
{---------------------}

max:=0;
k:=0;

{ищем в массиве максмильные элементы и их отбрасываем}
while k<trunc(n/2) do begin
  for i:=1 to n do begin
    if (z[i]>max) then begin
      max:=z[i];
      i1:=i;
    end;
  end;


  k:=k+1;
  z[i1]:=0;
end;

{-------------------------------------------}

v:=0;

{считаем сумму элементов в измененном массиве}
for i:=1 to n do
  v:=v+z[i];
{выводим ее на экран}
write(v);
end.

Последний раз редактировалось Иллидан; 09.03.2008 в 14:15.
Иллидан вне форума Ответить с цитированием
Старый 09.03.2008, 14:21   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

1. У тебя массив на 100, а надо на 101.
2. Нужна сортировка по возрастанию.
3. Для первых (K+1) div 2 чисел складываешь значения (A[i]+1) div 2.

А быстрее не сортировать, а создать массив из 10001 элемента (P) и при появлении групы из Z человек: inc(P[Z]). Проходишься по массиву и складываешь P[Z]*((Z+1) div 2) для первых (K+1) div 2 чисел (не нулей).

Последний раз редактировалось Carbon; 09.03.2008 в 14:30.
Carbon вне форума Ответить с цитированием
Старый 09.03.2008, 20:01   #3
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Благодарю, Сarbon, исправил, теперь все работает.
Иллидан вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 5 07.07.2008 12:10
Задача по ТП. GE076 Помощь студентам 11 07.12.2007 19:29
задача, SOS Exo Microsoft Office Excel 2 25.09.2007 14:04