vickrodionov
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору В лагере прошел турнир по футболу. Теперь необходимо подвести результаты и составить итоговую таблицу. Турнир прошел в один круг, т.е. каждая команда сыграла с каждой ровно один раз. За победу команда получала 3 очка, за ничью - 1 очко, а за поражение - 0 очков. Кроме того, в таблице учитывается разница пропущенных и забитых мячей. Требуется упорядочить команды по невозрастанию набранных очков, а при равенстве очков, раньше в таблице должна идти команда, у которой разница забитых и пропущенных мячей больше. В первой строке входного файла вводится единственное число N - количество команд, учавствувовших в турнире. Во второй строке записаны N неотрицательных целых чисел - количество очков, набранных каждой командой. В третьей строке содержатся N чисел - разница забитых и пропущенных мячей каждой команды. В выходной файл вывести N чисел - номера команд в порядке, в котором они будут записаны в итоговой таблице. Если количество очков и разница забитых и пропущенных мячей для каких то команд совпадают, то их можно выводить в произвольном порядке. Добавлено: Помогите переделать так, чтобы раскладовалось только на 1, 2, 5 и 10 и по возрастанию. Добавлено: program Project1; {$APPTYPE CONSOLE} uses SysUtils; type razb = array[0..100000] of longint; var n,i,l,k:integer; x:razb; t,f:TextFile; procedure next(var x : razb; var l : longint); var i,j,s:integer; begin i := l - 1; s := x[l]; while (i > 1) and (x[i - 1] <= x[i]) do begin s:=s+x[i]; dec(i); end; inc(x[i]); l:=i+s-1; for j:=i+1 to l do x[j]:=1; end; begin AssignFile(f,'cash.in'); AssignFile(t,'cash.out'); reset(f); rewrite(t); readln(f,n); l:=n; for i := 1 to l do x[i] := 1; for i := 1 to n do write(t,x[i],' '); writeln; repeat next(x,l); inc(k); for i:=1 to l do write(t,x[i],' '); writeln; until l = 1; Closefile(t); end. |