program paletta; (*non funzionano come dovrebbero SOMMA E MODIFICA*)
var N,i0 ,i,z, dimpari, dimdispari:Longint;
V,pari, dispari, controllo: array of longint;
n_ribaltamenti,numero_ribaltamenti, piccolidopo,maggioriprima,fuoriposto, ricordafuoriposto:int64;
ordinabile: boolean;
function SOMMA(X:longint):int64;
begin
SOMMA:=0;
while (X > 0) do
begin
X:=X-(X and -X);
SOMMA:=SOMMA+controllo[X];
end
end;
Procedure modifica(X:longint; D:longint);
begin
while (X <=D) do
begin
X:=X+(X and -X);
controllo[X]:=controllo[X]+1;
end
end;
function paletta_sort(N: longint; V: array of longint): int64;
begin
if N mod 2 = 0 then begin dimpari:=N div 2; dimdispari:= dimpari; end
else begin dimdispari:=N div 2 ; dimpari:= dimdispari+1; end;
Setlength(pari, dimpari);
Setlength(dispari, dimdispari);
Setlength(controllo, N);
ordinabile:=true;
for z:=0 to N-1 do if V[z] mod 2 <> z mod 2 then begin ordinabile:=false; n_ribaltamenti:=-1; end;
if ordinabile=true then begin
for i:=1 to N do controllo[i]:=0;
for i:=0 to N -1 do if i mod 2 =0 then pari[i div 2 +1 ]:=V[i] div 2 +1;
for i:=0 to N -1 do if i mod 2 <> 0 then dispari[i div 2 +1 ]:=(V[i] -1) div 2 +1 ;
for i:=1 to N div 2 do write (pari[i],' '); writeln;
for i:=1 to N div 2 do write (dispari[i],' '); writeln;
i:=1; n_ribaltamenti:=0;
while i<=dimpari do
begin
piccolidopo:=0;
modifica (i, dimpari);
writeln (i,' ',controllo[i],' ');
piccolidopo:=pari[i]-1 -somma(pari[i]);
writeln(pari[i],' ',somma(pari[i]), ' ', piccolidopo);
i:=i+1;
end;
n_ribaltamenti:=n_ribaltamenti+piccolidopo;
for i:=1 to N do controllo[i]:=0;
i:=1;
while i<=dimdispari do
begin
piccolidopo:=0;
modifica (i, dimdispari);
piccolidopo:=dispari[i]-1-somma(dispari[i]);
i:=i+1;
end;
n_ribaltamenti:=n_ribaltamenti+piccolidopo;
end;
paletta_sort:=n_ribaltamenti;
end;
begin
(*assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);*)
{ Reading input }
readln( N);
Setlength(V, N);
for i0 := 0 to N-1 do
begin
read(V[i0]);
end;
{ Calling functions }
numero_ribaltamenti := paletta_sort(N, V);
{ Writing output }
writeln(numero_ribaltamenti);
end.
cHJvZ3JhbSBwYWxldHRhOyAoKm5vbiBmdW56aW9uYW5vIGNvbWUgZG92cmViYmVybyBTT01NQSBFIE1PRElGSUNBKikKdmFyIE4saTAgLGkseiwgZGltcGFyaSwgZGltZGlzcGFyaTpMb25naW50OwogICAgVixwYXJpLCBkaXNwYXJpLCBjb250cm9sbG86IGFycmF5ICBvZiBsb25naW50OwogICAgbl9yaWJhbHRhbWVudGksbnVtZXJvX3JpYmFsdGFtZW50aSwgcGljY29saWRvcG8sbWFnZ2lvcmlwcmltYSxmdW9yaXBvc3RvLCByaWNvcmRhZnVvcmlwb3N0bzppbnQ2NDsKICAgICBvcmRpbmFiaWxlOiBib29sZWFuOwogICAgIApmdW5jdGlvbiBTT01NQShYOmxvbmdpbnQpOmludDY0OwogYmVnaW4KICAgIFNPTU1BOj0wOwoJd2hpbGUgKFggPiAwKSAJZG8gCgkgICBiZWdpbgoJICAgIFg6PVgtKFggYW5kIC1YKTsKCSAgICBTT01NQTo9U09NTUErY29udHJvbGxvW1hdOwoJICAgZW5kCiBlbmQ7ClByb2NlZHVyZSBtb2RpZmljYShYOmxvbmdpbnQ7IEQ6bG9uZ2ludCk7CiAgYmVnaW4KICAgICAJd2hpbGUgKFggPD1EKSAJZG8gCiAgICAgICAgCWJlZ2luCiAgICAgICAgCSAgWDo9WCsoWCBhbmQgLVgpOwoJICAgICAgICAgIGNvbnRyb2xsb1tYXTo9Y29udHJvbGxvW1hdKzE7CgkgICAgICAgZW5kCiAgZW5kOwogCiBmdW5jdGlvbiBwYWxldHRhX3NvcnQoTjogbG9uZ2ludDsgVjogYXJyYXkgb2YgbG9uZ2ludCk6IGludDY0OwpiZWdpbgogICAgaWYgTiBtb2QgMiA9IDAgdGhlbiBiZWdpbiBkaW1wYXJpOj1OIGRpdiAyOyBkaW1kaXNwYXJpOj0gZGltcGFyaTsgZW5kCiAgICAgICAgICAgICAgICAgICBlbHNlIGJlZ2luIGRpbWRpc3Bhcmk6PU4gZGl2IDIgOyBkaW1wYXJpOj0gZGltZGlzcGFyaSsxOyBlbmQ7CiAgIFNldGxlbmd0aChwYXJpLCBkaW1wYXJpKTsKICAgU2V0bGVuZ3RoKGRpc3BhcmksIGRpbWRpc3BhcmkpOwogICBTZXRsZW5ndGgoY29udHJvbGxvLCBOKTsKICAgb3JkaW5hYmlsZTo9dHJ1ZTsKICAgZm9yIHo6PTAgdG8gTi0xIGRvIGlmIFZbel0gbW9kIDIgPD4geiBtb2QgMiB0aGVuIGJlZ2luIG9yZGluYWJpbGU6PWZhbHNlOyBuX3JpYmFsdGFtZW50aTo9LTE7IGVuZDsKICAgaWYgb3JkaW5hYmlsZT10cnVlIHRoZW4gYmVnaW4gICAKICAgICAgICAgICAgZm9yIGk6PTEgdG8gTiAgZG8gY29udHJvbGxvW2ldOj0wOwogICAgICAgICAgICBmb3IgaTo9MCB0byBOIC0xIGRvIGlmIGkgbW9kIDIgPTAgdGhlbiBwYXJpW2kgZGl2IDIgKzEgXTo9VltpXSBkaXYgMiArMTsKICAgICAgICAgICAgZm9yIGk6PTAgdG8gTiAtMSBkbyBpZiBpIG1vZCAyIDw+IDAgdGhlbiBkaXNwYXJpW2kgZGl2IDIgKzEgXTo9KFZbaV0gLTEpIGRpdiAyICsxIDsKICAgICAgICAgICAgZm9yIGk6PTEgdG8gTiBkaXYgMiBkbyB3cml0ZSAocGFyaVtpXSwnICcpOyB3cml0ZWxuOwogICAgICAgICAgICBmb3IgaTo9MSB0byBOIGRpdiAyIGRvIHdyaXRlIChkaXNwYXJpW2ldLCcgJyk7IHdyaXRlbG47CiAgICAgICAgICAgIGk6PTE7IG5fcmliYWx0YW1lbnRpOj0wOyAKICAgICAgICAgICAgd2hpbGUgaTw9ZGltcGFyaSBkbwogICAgICAgICAgICAgICAgYmVnaW4KCSAgICAgICAgICAgICAgcGljY29saWRvcG86PTA7IAoJICAgICAgICAgICAgICBtb2RpZmljYSAoaSwgZGltcGFyaSk7CgkgICAgICAgICAgICAgIHdyaXRlbG4gKGksJyAnLGNvbnRyb2xsb1tpXSwnICcpOyAKCSAgICAgICAgCSAgcGljY29saWRvcG86PXBhcmlbaV0tMSAtc29tbWEocGFyaVtpXSk7CgkgICAgICAgIAkgIHdyaXRlbG4ocGFyaVtpXSwnICcsc29tbWEocGFyaVtpXSksICcgJywgcGljY29saWRvcG8pOwoJICAgIAkJICBpOj1pKzE7CgkgICAgCQllbmQ7IAoJICAgICAgICBuX3JpYmFsdGFtZW50aTo9bl9yaWJhbHRhbWVudGkrcGljY29saWRvcG87CgkgICAgICAgIGZvciBpOj0xIHRvIE4gIGRvIGNvbnRyb2xsb1tpXTo9MDsgCgkgICAgCWk6PTE7ICAKCSAgICAJd2hpbGUgaTw9ZGltZGlzcGFyaSBkbwogICAgICAgICAgICAJYmVnaW4KCSAgICAJCQlwaWNjb2xpZG9wbzo9MDsKCSAgICAJCQltb2RpZmljYSAoaSwgZGltZGlzcGFyaSk7CgkgICAgICAgIAkJcGljY29saWRvcG86PWRpc3BhcmlbaV0tMS1zb21tYShkaXNwYXJpW2ldKTsgCgkgICAgCQkJaTo9aSsxOwoJICAgIAkJZW5kOwoJICAgIAkJCW5fcmliYWx0YW1lbnRpOj1uX3JpYmFsdGFtZW50aStwaWNjb2xpZG9wbzsKCSBlbmQ7IAogcGFsZXR0YV9zb3J0Oj1uX3JpYmFsdGFtZW50aTsKZW5kOwoKCmJlZ2luCiAgICAoKmFzc2lnbihpbnB1dCwgJ2lucHV0LnR4dCcpOyByZXNldChpbnB1dCk7CiAgICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7KikKICAgICAgICB7IFJlYWRpbmcgaW5wdXQgfQoJcmVhZGxuKCBOKTsKCVNldGxlbmd0aChWLCBOKTsKCWZvciBpMCA6PSAwIHRvIE4tMSBkbwoJYmVnaW4KCQlyZWFkKFZbaTBdKTsKCWVuZDsKCXsgQ2FsbGluZyBmdW5jdGlvbnMgfQoJbnVtZXJvX3JpYmFsdGFtZW50aSA6PSBwYWxldHRhX3NvcnQoTiwgVik7CgoJeyBXcml0aW5nIG91dHB1dCB9Cgl3cml0ZWxuKG51bWVyb19yaWJhbHRhbWVudGkpOwoJCmVuZC4K