Получил ответ от эксперта. Я в шоке. Цитирую как есть.
Комментарии эксперта:
В решенииэкзаменуемого допущена ошибка, размер используемой памяти для массивов D1 и D2 зависит от входных данных,
Во-первых, если размер массива гораздо больше, чем количество точек, то нельзя сказать «размер используемой памяти зависит от количества точек», соответственно критерий на 3 балла не выполняется
Во-вторых, нельзя сказать, что «время работы линейно зависит от N»
Согласно критериям к оценке работы ученика и, исходя из того, что программа работает верно и все исходные данные точек сохраняются в массиве, где рассматриваются все возможные треугольники, из которых выбираются подходящие, работа ученика должна быть оценена на 2 балла.
Добавлено спустя 1 минуту 49 секунд:Во-вторых, нельзя сказать, что «время работы линейно зависит от N»
КАК????? ПОЧЕМУ???? Почему этого сказать нельзя? Время работы линейно зависит N. Именно так можно и нужно сказать. Нелинейная зависимость - это вложенные циклы, которых в программе нет. Время работы зависит от N так:
t=kt*N+kt*(N-M)=2*kt*N-kt*M где kt - коэффициент перевода в величину времени, а М - количество точек не удовлетворяющих условию x=y или x=-y.
t=2*kt*N-kt*M это классическое линейное уравнение
Добавлено спустя 2 минуты 8 секунд:Согласно критериям к оценке работы ученика и, исходя из того, что программа работает верно и все исходные данные точек сохраняются в массиве, где рассматриваются все возможные треугольники, из которых выбираются подходящие, работа ученика должна быть оценена на 2 балла.
ДА БЛИН!!!! КАК???????В массив сохраняются не все исходные данные! В массив сохраняются только те исходные данные, которые соответствуют условию x=y или x=-y, а это, в общем случае, далеко не все исходные данные!
Треугольники все возможные у ученика так же не рассматриваются. Он, полностью соответствуя своему описанию алгоритма, а так же совпадая с правильным ответом из самого задания ищет два максимальных значения катетов. Он не рассматривает треугольники вообще. Рассмотрение всех возможных треугольников - это либо поиск нужного треугольника по площади либо перебор для каждого катета с одной стороны всех катетов с другой. Что никак не сделать с линейной зависимостью от N, а у него зависимость именно линейная.
Добавлено спустя 1 час 59 минут 36 секунд:bormant писал(а):2) Фактически используемые размеры ND1 и ND2 зависят не от N (как выше в примере "на 2"), а от количества подходящих треугольников (Abs(x)=Abs(y)), которое меньше или равно N.
Пришло в воспалённую голову.
Чтобы зависело от N, по Вашему, нужно, чтобы все точки были записаны в массив? Тогда ведь будет не меньше или равно, а чётко равно. Т.е., как, собственно, Вы и писали:
- Код: Выделить всё
var
N: integer;
D1, D2: array [1..1000] of integer;
Max1, Max2: integer; S: integer; i, x, y: integer;
begin
readln(N);
for i:=1 to N do readln(D1[i],D2[i]);
Max1:=0; Max2:=0;
for i:=1 to N do if (D1[i]=D2[i]) and (Abs(D1[i]) > Max1) then Max1:= Abs(D1[i]);
for i:=1 to N do if (D1[i]=-D2[i]) and (Abs(D2[i]) > Max2) then Max2:= Abs(D2[i]);
S:=Max1*Max2;
if (S=0) then writeln'Треугольник не существует')
else writeln(S)
end.
Но "сохранение всех исходных данных в массив" это дословно критерий на 2 балла. Получается, чтобы выполнить критерий на 3 балла нужно, чтобы он был на 2 балла?
Добавлено спустя 1 час 2 минуты 8 секунд:Последний гвоздь в крышку:
- Код: Выделить всё
program project1;
var
a: array[1..$fffffff] of longint;
x, i: integer;
begin
readln(x);
for i := 1 to x do
a[i] := i;
writeln(a[x div 2]);
readln;
end.
Скриншот "снимок16" - занимаемая память при запуске приложения.
Таки зависит и плевать на объявление статического массива.
У вас нет необходимых прав для просмотра вложений в этом сообщении.