В сегоднешнем соревновании(Codeforces Round #111 (Div. 2)) отправил задачу (А близнецы), На тестах показала ошибку, а на домашнем машине показывает правельный ответ, пишу в Delphi, чья это вина?
код: program Project3;
{$APPTYPE CONSOLE} var i,n: integer; s,sum,min:longint; a:array of integer;
function Part(l, r: integer):integer; var v, i, j, b: integer; begin V:=a[r]; I:=l-1; j:=r; repeat repeat dec(j) until (a[j]<=v) or (j=i+1); repeat inc(i) until (a[i]>=v) or (i=j-1); b:=a[i]; a[i]:=a[j]; a[j]:=b; until i>=j; a[j]:=a[i]; a[i]:= a[r]; a[r]:=b; part:=i; end; procedure QuickSort(l, t: integer); var i: integer; begin if l<t then begin i:=part(l, t); QuickSort(l,i-1); QuickSort(i+1,t); end; end; begin
readln(n); SetLength(a,n+1); for I := 1 to n do begin read(a[i]); s:=s+a[i]; end; QuickSort(1,n); for I := n downto 1 do begin sum:=sum+a[i]; s:=s-a[i]; inc(min); if sum>s then Break; end;
writeln(min); end. Кто желает попробовать проверить моё решение, то на 7-ом тесте оно валится 7-ой тест 2 2 1 Ответ: 1 У меня же на сервере: 2 на моём ПК: 1
попробуй "s" и "sum" инициализировать..
Когда ты не инициализируешь и запускаешь у себя на компьютере ты запускаешь в дебуг режиме, а там по умолчанию переменным присваивается 0. На сервере решение запускается как релиз и там по умолчанию ничем не заполняются переменными (что раньше лежало в оперативе, то и лежит, или как -то так). Так что (и это просто правильней) нужно все переменные до их использования инициализировать (записывать в них какие-то значения). В данном случае просто обнулить.
Ну разве можно это считать ошибкой? Да, согласен, это недочёт, но не ошибка, думаю, у когото может "прокатить" такой вариант, а когото нет(
То что нужно инициализировать переменные это один из самых основных уроков. Это не недочёт это ошибка. много раз на этом вспоткнувшись привыкнете. Есть более странные вещи, уж поверьте.
У нас это называлось "обряд инициализации", который должна пройти любая переменная ;)
В данном контексте удивительно что прошло 7 тестов.
На ошибках учаться, теперь буду знать, надеюсь что и остальные не допустят такие же ошибки, всем спасибо!
Детская задачка: Буратино дали 4 яблока. 2 яблока он отдал Мальвине. Сколько у него осталось яблок?
Ответ: 282137918
Комментарий: Надо инициализировать переменные :)