Блог пользователя Igor_Kudryashov

Автор Igor_Kudryashov, 14 лет назад, По-русски

Разбор задачи "A. Что у нас на ужин?"


Решение задачи достаточно тривиальное. Необходимо было завести массив , в котором для каждого ряда зубов хранилось бы значение остаточной жизнеспособности самого больного зуба в этом ряду (самым больным зубом в ряду назовем тот, у которого минимальная остаточная жизнеспособность).


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


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

  • Проголосовать: нравится
  • -1
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Почему не прошло даже 1 тест?
var l,min,d,max,s,x,n,j,k,m,i,b,v:longint;a:array[0..1002]of longint; 
begin 
{ assign(input,'input.txt');reset(input); 
 assign
(output,'output.txt');rewrite(output);} 
 
read
(n,m,k); 
for i:=1 to m do a[i]:=1000001; 
for i:=1 to n do 
begin 
 read
(x,d); 
 
if a[x]> d then a[x]:=d; 
end; 
for i:=1 to m do 
inc
(s,a[i]); 
if s>k then write (k) else write(s); 
 
{ close(input); 
 close
(output);} 
end. 
14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Не силен в паскале, но возможно из-за того, что переменная s не проинициализирована нулем, и в ней может быть неизвестно какое значение.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Паскаль всегда инициализирует переменные нулём.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Однако в таком виде решение получает WA1, а при добавлении строки s:=0 оно получает вердикт "Полное решение".

      Так что я бы пересмотрел это утверждение :о

       

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Странно, я пользовался в школе TP 7 и не испытывал проблем с инициализацией, более того, в университете учили что наличие мусора в переменных - существенное отличие C++ от Паскаля
        • 14 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится

          Всё просто - Turbo Pascal действительно обнуляет, Delphi - нет, и думаю, на сервере для компиляции всех решений используется Delphi.

          Утверждение, которому учили в универе, - посмею предположить, что фигня :)

          • 14 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
            Скорее всего, отличие C++ от Паскаля не в пользу второго.
            Помню свой первый баг в кодинге на Паскале - я именно не обнулял переменную(вроде при поиске минимума) и там как раз был мусор.
          • 14 лет назад, # ^ |
              Проголосовать: нравится +3 Проголосовать: не нравится
            Так Delphi вроде не обнуляет. Windows обнуляет )
      • 14 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Действительно при обнулении прошло. Но мне не понятно почему  некоторые посылки (на пример № 132940, 133226,  137467) приняты, хотя в них нет присвоения первоначального значения соответствующей переменной. К стати, в предыдущих соревнованиях подобной проблемы не возникало.

         

    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Паскаль это физик такой, и нулём он ничего не инициализирует. ты имел в виду язык, но язык тут снова не причем. Зависит от компилятора что и чем инициализируется, в локальных переменных функций которые создаются на стеке обычно всякий мусор (по крайней мере в релизе). в глобальных переменных скорее всего нули на всех компилерах всех систем.

      на паскале давненько не писал, так что особо спорить не буду.