Задача с acm

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by BHYCHIK, 2 Jul 2011.

  1. BHYCHIK

    BHYCHIK Member

    Joined:
    30 Jan 2009
    Messages:
    52
    Likes Received:
    28
    Reputations:
    9
    Пытаюсь решить задачу http://acm.timus.ru/problem.aspx?space=1&num=1005
    Подскажите, пожалуйста, в чем ошибка?

    Code:
    program Stones;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils;
     
    var
      N: Byte;
      W: array[1..20] of Integer;
      I, J: Byte;
      A, B: Int64;
      Max: Byte;
      Temp: Integer;
    begin
      ReadLn(N);
      for I := 1 to N do
        Read(W[I]);
     
      for I := 1 to N - 1 do
      begin
        Max := I;
        for J := I + 1 to N do
        begin
          if W[Max] < W[J] then
            Max := J;
        end;
        Temp := W[Max];
        W[Max] := W[I];
        W[I] := Temp;
      end;
     
      A := W[1];
      B := 0;
     
      for I := 2 to N do
      begin
        if A < B then
          A := A + W[I]
        else
          B := B + W[I];
      end;
     
      Write(Abs(A-B));
    end.
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    ты криво упорядочиваешь массив по убыванию
    это не надо

    begin
    Max := I;
    ..
    begin
    Max := J;

    оставляешь так

    for i:=1 to n-1 do
    for j:=i+1 to n do
    if a<a[j] then
    begin
    temp:=a;
    a:=a[j];
    a[j]:=temp;

    в конце так же ошибки
    надо так

    raz:=0;

    for i:=1 to n do
    if raz>0 then
    raz:=raz - a
    else
    raz:=raz+a;
    исправляй.
     
  3. BHYCHIK

    BHYCHIK Member

    Joined:
    30 Jan 2009
    Messages:
    52
    Likes Received:
    28
    Reputations:
    9
    Чем я массив то не правильно упорядочиваю? Мой способ должен работать быстрее, т.к. не делаю лишних перемещений.

    Второе замечание фактически тоже самое, что и у меня, но оптимальнее за счет второй переменной.

    Проверил твой вариант, ошибка на том же самом тесте, что и у меня была изначально.

    Вот код
    Code:
    var
      N: Byte;
      W: array[1..20] of Integer;
      I, J: Byte;
      A: Int64;
      Temp: Integer;
    begin
      ReadLn(N);
      for I := 1 to N do
        Read(W[I]);
    
      for i:=1 to n-1 do
      begin
        for j:=i+1 to n do
        begin
          if w[i]<w[j] then
          begin
            temp:=w[i];
            w[i]:=w[j];
            w[j]:=temp;
           end;
        end;
      end;
    
      A := 0;
    
      for I := 1 to N do
      begin
        if A > 0 then
          A := A - W[I]
        else
          A := A + W[I];
      end;
    
      Write(Abs(A));
    end.
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    Вот так верно.
    Code:
    program Project2;
    
    {$APPTYPE CONSOLE}
    
    var a:array[1..100] of longint;
        i,j,n,raz:byte;
      temp:longint;
    begin
    
    
     readln(n); 
    
     for i:=1 to n do
      read(a[i]);
    
     readln;
    
     for i:=1 to n-1 do
      for j:=i+1 to n do
       if a[i]<a[j]    then
       begin
        temp:=a[i];
      a[i]:=a[j];
      a[j]:=temp;
       end;
    
      raz:=0;
    
      for i:=1 to n do
      if raz>0 then 
       raz:=raz - a[i]
      else
       raz:=raz+a[i];
    
     
      writeln(abs(raz));
      readln;
    end.
    
      
    
     
    #4 DooD, 2 Jul 2011
    Last edited: 2 Jul 2011
  5. BHYCHIK

    BHYCHIK Member

    Joined:
    30 Jan 2009
    Messages:
    52
    Likes Received:
    28
    Reputations:
    9
    Все равно ошибка, причем на первом тесте. В моем варианте только на 5 ошибка. Естественно в выводе убрал 'otvet'.
     
  6. BHYCHIK

    BHYCHIK Member

    Joined:
    30 Jan 2009
    Messages:
    52
    Likes Received:
    28
    Reputations:
    9
    Да не сколько я не вводил) Там система автопроверки на этом сайте. Я не знаю и мой вариант на чем валится.
     
  7. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    тю,так я не понял тебе надо проверку пройти или что?ты хотя бы скомпилируй и введи данные,все там работает...
     
  8. BHYCHIK

    BHYCHIK Member

    Joined:
    30 Jan 2009
    Messages:
    52
    Likes Received:
    28
    Reputations:
    9
    Да в моем варианте я тоже ошибок не вижу в ручную)))

    Мне проверку надо пройти, но для себя. Просто интересно найти косяки. Одногруппники смотрели, ошибку не нашли.

    JudgeId: 108594GZ
     
  9. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    блин ,не знаю че им там не нравится, но код верный.
     
  10. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
    я бы для начала завалил тебя на том, как ты называешь переменные