![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Тренеруюсь в общем в решении задачек, не могу понять в одной что не так
вот задачка http://acmp.ru/?main=task&id_task=193 вот решение мое [code]затер что бы на олимпиадах гугл не помог)[/quote] Проверял у себя на придуманных тестах Цитата:
Последний раз редактировалось ALexandr555, 07.11.2012 в 16:44. |
|
#2
|
||||
|
||||
|
Ну, сразу видно, что в их ответе (или исходных данных) есть ошибка:
Дают таблицу 5х4, а в ответе среди координат встречаются и (0) и (5), (0) и (4) - или таблица должна быть 6х5 или координаты должны быть 0 0 1 1 1 1 4 3 Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var FieldArray:array of array of integer;
rectArray:array of array[0..3] of integer;
M,N,K:Integer;
i,j,l:Integer;
f:TextFile;
begin
AssignFile(f,'input.txt');
Reset(f);
Read(F, N, M);
Read(F,k);
SetLength(FieldArray,M,N);
for j:=1 to N do
for i:=1 to M do
read(f,FieldArray[i-1][j-1]);
SetLength(rectArray,K);
for l:=0 to K-1 do
begin
rectArray[l][0]:=M-1; rectArray[l][1]:=0;
rectArray[l][2]:=0; rectArray[l][3]:=N-1;
for j:=0 to N-1 do
begin
for i:=0 to M-1 do
begin
if FieldArray[i,j]=l+1 then
begin
if rectArray[l][0]>i then
rectArray[l][0]:=i;
if rectArray[l][0]<j then
rectArray[l][1]:=j;
if rectArray[l][2]<i then
rectArray[l][2]:=i;
if rectArray[l][3]>j then
rectArray[l][3]:=j;
end;
end;
end;
end;
closefile(f);
AssignFile(f,'output.txt');
ReWrite(f);
for l:=0 to K-1 do
begin
write(f,inttostr(rectArray[l][0])+' '+inttostr(N-1-rectArray[l][1])+' '+inttostr(rectArray[l][2]+1)+' '+inttostr(N-rectArray[l][3]));
writeln(f);
end;
closefile(f);
end.Мой вариант ![]() Последний раз редактировалось YVitaliy, 07.11.2012 в 13:06. |
|
#3
|
||||
|
||||
|
Мое решение оказалось правильным похоже перепутал пути что ли когда отправлял...
YVitaliy у твоего решения на ихних тестах на втором ошибка пример у них правильный т.к. нижний угол берется на единицу меньше позиции, то есть самый край |