Помогите понять что делает эта программа и на каком принципе она основана: {$I-,S-,Q-,R-} Program m_inverse; var i: LongInt; N: LongInt; Result: Int64; P, Pos, S: Array[1..100000] of LongInt; RCnt, LCnt: Array[1..100000] of Int64; Function Prev(X: LongInt): LongInt; begin Prev:= X and (X-1); end; Function Next(X: LongInt): LongInt; begin Next:= X shl 1 - Prev(X); end; Procedure Add(pos: LongInt); var X: LongInt; begin X:= pos; While X <= N do begin Inc(S[X]); X:= Next(X); end; end; Function FindSimpleSum(x: LongInt): LongInt; var Sum: LongInt; begin Sum:= 0; While x>0 do begin Sum:= Sum + S[x]; x:= Prev(x); end; FindSimpleSum:= Sum; end; Function FindSum(l, r: LongInt): LongInt; begin FindSum:= FindSimpleSum(r) - FindSimpleSum(l-1); end; begin Assign(Input, 'input.txt'); ReSet(Input); ReadLn(N); For i:= 1 to N do begin ReadLn(P[i]); Pos[P[i]]:= i; end; Close(Input); FillChar(S, SizeOf(S), 0); For i:= 1 to N do begin RCnt[Pos[i]]:= FindSum(Pos[i]+1, N); Add(Pos[i]); end; FillChar(S, SizeOf(S), 0); For i:= N downto 1 do begin LCnt[Pos[i]]:= FindSum(1, Pos[i]-1); Add(Pos[i]); end; Result:= 0; For i:= 1 to N do Result:= Result + LCnt[i] * RCnt[i]; Assign(Output, 'output.txt'); ReWrite(Output); WriteLn(Result); Close(Output); end.
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Pascal системы исчисления (2022)
- Форум Pascal (2018)
- Форум Правильно портировать Pascal код (2018)
- Форум Занимательный PAS2C (2017)
- Форум Сравнение производительности доступа к полям структур в Python, Common Lisp и С++ (2017)
- Форум [vala][srt2tmx] Покритикуйте код (2012)
- Форум Разбраинфакaлка данных на вашем ПеКа (2024)
- Форум Решил освоить perl =) (2005)
- Форум Perl + FastCGI + nginx (2009)
- Форум pascal (2008)