Показать сообщение отдельно
  #1  
Старый 30.11.2011, 18:22
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию олимпиадная задачка

перед предстоящей олимпиадой решил попробовать себя в тестовой задачке
сама тестовая задачка
Цитата:
Когда столбик термометра каждый день замирает на отметке около +40, очень хорошо продается вода — газированная, минеральная, лимонады... Настолько хорошо, что покупатели обращают внимание на марку воды и производителя куда меньше, чем обычно. Директор торговой сети «Альнико» для лучшего планирования пополнения запасов потребовал, чтобы каждое утро у него на столе лежал отчет о том, сколько было продано воды за предыдущий день. На следующее утро желаемая цифирь была ему предоставлена.

— 3236,6 л. воды газированной, 2671,25 л. лимонадов, — начал читать он и возмутился, — Да, когда мы будем заказывать поставку, так и попросим, чтобы не забыли бутылочку 0,6 литра положить. Мне нужны круглые цифры: 3 тысячи литров воды газированной, 2 тысячи литров лимонада. Понятно?

Сотрудникам было понятно, и на следующий день директор был доволен: снова 3 тысячи литров газировки и 2 тысячи литров лимонада. А еще через день директору принесли общий отчет о продажах. И он снова был рассержен:

— Я сам посчитал: за четыре дня продано 12 тысяч литров газированной воды. А в общем отчете больше 14!

— Так Вы же сами просили сообщать только количество тысяч литров... А было: 3236,6 л., потом 3749,2 л., потом 3874,8 л., и, наконец, 3521,6 л. Так что вот и получилось 14382,2 л.

Нельзя сказать, чтобы директора успокоила такая арифметика:

— Ну, тогда округляйте! Эти 3200 с чем там — до 3 тысяч, а 3800 — до 4 тысяч.

— Так ведь все равно не сойдется, — возразил один из менеджеров. — Получится 3 + 4 + 4 + 4, итого 15. А 14382 все же к 14 ближе...

— Так, я хочу, чтобы все было нор-маль-но! Цифры должны сходиться. Каждый день. А как вы это сделаете, не важно!

— Хорошая задачка, — сказал один менеджер другому, когда они вышли из кабинета директора. — Значит, надо то округлять, то отбрасывать. И каждый день результат должен быть как можно больше похож на реальный.

— Ну да, — поддержал его другой. — Получается, во второй и третий дни надо было округлять до 4, а вот в четвертый уже отбросить. Давай программиста попросим, ему работы на пять минут, а нам какое облегчение...

Ваша задача — по заданной последовательности объемов продаж каждый день составить инструкцию для менеджеров. Для простоты менеджеры отбросили дробные части литра и сообщают Вам только целые числа. Инструкция должна помочь им выбрать между уменьшением и увеличением объема продаж при записи его в тысячах литров, так чтобы каждый день данные директора наилучшим образом (т.е. с точностью до обычного математического округления) совпадали с общим отчетом.



Формат входного файла input.txt

Первая строка — целое число N (1 <= N <= 100) — количество дней, в течение которых фиксируются объемы продаж.

Каждая из следующих N строк содержит одно целое число (не меньшее 1000 и не большее 10000) — объем продаж в соответствующий день



Формат выходного файла output.txt

Первая строка — строка из N символов (без пробелов), содержащая символ F, если при учете объема продаж в этот день нужно уменьшить число (или же нет необходимости его изменять), и символ C, если нужно его увеличить.



Пример входного файла — 1

4

3237

3749

3875

3522



Пример выходного файла — 1

FCCF



Пояснение к примеру:

1-ый день: директор получает отчет о продаже 3 тысяч литров, в общем отчете — 3237 литров, или 3,237 тысяч литров. Математическое округление даст 3.

2-ой день: директор получает отчет о продаже 4 тысяч литров, в общем отчете — 6,986 тысяч литров. Суммарно у директора получается 7 тысяч литров.

3-ий день: директор получает отчет о продаже 4 тысяч литров, суммарно у него получается 11 тысяч литров, а в общем отчете — 10,861 тысяч литров

4-ый день: директор получает отчет о продаже 3 тысяч литров, суммарно у него выходит 14 тысяч литров, а в общем отчете — 14,383 тысячи литров.



Пример входного файла — 2



5

3300

3285

4000

3175

3775



Пример выходного файла — 2

FCFFC

вот что я написал
Код:
program ConPrg;
{$APPTYPE CONSOLE}

var
fin, fout: TextFile;
result: string;
n1,n2,k,z: real;
i: integer;
m: array[1..101] of integer;
begin

AssignFile(fin, 'input.txt');
Reset(fin);
for i:=1 to 101 do
Readln(fin, m[i]);

k:=0;
n2:=0;
for i:=1 to m[1] do
 begin
  z:=m[i+1]/1000;
  k:=k+z;
  n1:=n2;
  n2:=Round(k);
  if (n2-n1)>z then result:=result+'C'
  else if ((n2-n1)<z) or ((n2-n1)=z) then result:=result+'F';
 end;

CloseFile(fin);
AssignFile(fout, 'output.txt');
Rewrite(fout);
write(fout, result);
CloseFile(fout);
end.

закинул на проверку и выдало
Цитата:
Wrong Answer on test 6 - решение выдало неверный результат на тесте 6. Проверьте правильность придуманного Вами алгоритма.
вроде все правильно, если не трудно подскажите что может быть не так
Ответить с цитированием