ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1126. Магнитные бури

Why I got 'Wrang answer'?
Послано qwt 3 апр 2002 16:07
var
  a:array[0..14000] of integer;
  b:array[0..25000] of integer;
  n,i,j,k,max:integer;

begin
  readln(n);
  fillchar(a,sizeof(a),0);fillchar(b,sizeof(b),0);    b[0]:=1;
  for i:=0 to n-2 do begin
    readln(a[i]);
    inc(b[a[i]]);
    if a[i]>max then max:=a[i];
  end;
  readln(j);
  while j>=0 do begin
    inc(i);
    i:=i mod n;
    dec(b[a[i]]);a[i]:=j;
    inc(b[j]);
    if j>max then max:=j;
    k:=max;
    if b[max]=0 then for max:=k-1 downto 0 do if b[max]>0 then break;
    writeln(max);
    readln(j);
  end;
end.
Re: Why I got 'Wrang answer'?
Послано MadPsyentist/Sam 4 апр 2002 12:06
I don't know your logic truely but I test your program (compiled under
DevPascal (FreePascal), Windows98SE) and found your program get
Runtime Error and Wrong Answer many time when the value of
measure is high. It didn't crash but the error message was redirected to
the output instead , I don't know why.

I randomly generate the test data and this is a case your program make
wrong output, but no Runtime Error
Input:
6
29261
440
1757
22684
2247
11022
25134
22643
6002
3108
16056
12612
29390
25192
6271
26467
7802
23059
1921
-1

My AC program output:
29261
25134
25134
25134
25134
25134
25134
29390
29390
29390
29390
29390
29390
26467

Your output:
29261
27029
27029
27029
27029
27029
27029
29390
29390
29390
29390
29390
29390
27029

If you edit your program and pass this test data but still get WA, you can
ask me for me test. My e-mail address is piyawut@se-ed.net.
I mean "more test" ,not "me test"
Послано MadPsyentist/Sam 4 апр 2002 12:08
> I don't know your logic truely but I test your program (compiled under
> DevPascal (FreePascal), Windows98SE) and found your program get
> Runtime Error and Wrong Answer many time when the value of
> measure is high. It didn't crash but the error message was redirected
to
> the output instead , I don't know why.
>
> I randomly generate the test data and this is a case your program
make
> wrong output, but no Runtime Error
> Input:
> 6
> 29261
> 440
> 1757
> 22684
> 2247
> 11022
> 25134
> 22643
> 6002
> 3108
> 16056
> 12612
> 29390
> 25192
> 6271
> 26467
> 7802
> 23059
> 1921
> -1
>
> My AC program output:
> 29261
> 25134
> 25134
> 25134
> 25134
> 25134
> 25134
> 29390
> 29390
> 29390
> 29390
> 29390
> 29390
> 26467
>
> Your output:
> 29261
> 27029
> 27029
> 27029
> 27029
> 27029
> 27029
> 29390
> 29390
> 29390
> 29390
> 29390
> 29390
> 27029
>
> If you edit your program and pass this test data but still get WA, you
can
> ask me for me test. My e-mail address is piyawut@se-ed.net.
Re: I mean "more test" ,not "me test"
Послано acmkx 22 май 2005 14:57
MY Program's answer is the same as yours
But I still get WA
Here is my source:
var a:array[1..14000]of longint;
    remax:array[1..140]of longint;
    temp,m,i,count,block,max:longint;
procedure findmax;
 var i:longint;
 begin
  max:=0;
  for i:=1 to 140 do
   if(remax[i]>max)then max:=remax[i];
 end;
begin
 readln(m);
 fillchar(remax,sizeof(remax),0);
 max:=0;
 for I:=1 to m-1 do
  begin
   readln(a[i]);
   if a[i]>max then max:=a[i];
   block:=i div 100;
   if a[i]>remax[block+1] then remax[block+1]:=a[i];
  end;
 readln(a[m]);
 count:=m;
 while(a[count]<>-1)do
  begin
   if a[count]>max then max:=a[count];
   writeln(max);
   block:=count div 100;
   if(a[count]>remax[block+1])then remax[block+1]:=a[count];
   count:=count+1;
   if count=m+1 then count:=1;
   temp:=a[count];
   a[count]:=0;
   block:=count div 100;
   if(temp=remax[block+1])then
    begin
     remax[block+1]:=0;
     for i:=block*100+1 to (block+1)*100 do
      if a[i]>remax[block+1]then remax[block+1]:=a[i];
    end;
   if(temp=max)then findmax;
   readln(a[count]);
  end;
end.