program ideone;
{$MODE OBJFPC}{$LONGSTRINGS ON}
uses
HeapTrc;
type
PNode = ^TNode;
TNode = record
Next: PNode;
Data: UInt8;
end;
procedure CreateList(out AHead: PNode; const AData: array of UInt8);
var
LLast, LNew: PNode;
LIndex: Integer;
begin
New(AHead);
AHead^.Next := nil;
AHead^.Data := AData[0];
LLast := AHead;
for LIndex := 1 to High(AData) do
begin
New(LNew);
LNew^.Next := nil;
LNew^.Data := AData[LIndex];
LLast^.Next := LNew;
LLast := LNew;
end;
end;
procedure DisposeList(var AHead: PNode);
var
LToDispose: PNode;
begin
while AHead <> nil do
begin
LToDispose := AHead;
AHead := AHead^.Next;
Dispose(LToDispose);
end;
AHead := nil;
end;
procedure SplitList(const ALeftHead: PNode; out ARightHead: PNode; ACutAfter: Integer);
var
LLeftLast: PNode;
begin
LLeftLast := ALeftHead;
while ACutAfter > 0 do
begin
LLeftLast := LLeftLast^.Next;
Dec(ACutAfter);
end;
ARightHead := LLeftLast^.Next;
LLeftLast^.Next := nil;
end;
procedure ShowList(AHead: PNode);
begin
while AHead <> nil do
begin
Write(AHead^.Data:2);
AHead := AHead^.Next;
end;
WriteLn();
end;
var
LLeftHead, LRightHead: PNode;
begin
CreateList(LLeftHead, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
ShowList(LLeftHead);
SplitList(LLeftHead, LRightHead, 6);
ShowList(LLeftHead);
ShowList(LRightHead);
DisposeList(LLeftHead);
DisposeList(LRightHead);
end.
cHJvZ3JhbSBpZGVvbmU7Cgp7JE1PREUgT0JKRlBDfXskTE9OR1NUUklOR1MgT059Cgp1c2VzCiAgSGVhcFRyYzsKCnR5cGUKICBQTm9kZSA9IF5UTm9kZTsKICBUTm9kZSA9IHJlY29yZAogICAgTmV4dDogUE5vZGU7CiAgICBEYXRhOiBVSW50ODsKICBlbmQ7CgogIHByb2NlZHVyZSBDcmVhdGVMaXN0KG91dCBBSGVhZDogUE5vZGU7IGNvbnN0IEFEYXRhOiBhcnJheSBvZiBVSW50OCk7CiAgdmFyCiAgICBMTGFzdCwgTE5ldzogUE5vZGU7CiAgICBMSW5kZXg6IEludGVnZXI7CiAgYmVnaW4KICAgIE5ldyhBSGVhZCk7CiAgICBBSGVhZF4uTmV4dCA6PSBuaWw7CiAgICBBSGVhZF4uRGF0YSA6PSBBRGF0YVswXTsKCiAgICBMTGFzdCA6PSBBSGVhZDsKCiAgICBmb3IgTEluZGV4IDo9IDEgdG8gSGlnaChBRGF0YSkgZG8KICAgIGJlZ2luCiAgICAgIE5ldyhMTmV3KTsKICAgICAgTE5ld14uTmV4dCA6PSBuaWw7CiAgICAgIExOZXdeLkRhdGEgOj0gQURhdGFbTEluZGV4XTsKCiAgICAgIExMYXN0Xi5OZXh0IDo9IExOZXc7CiAgICAgIExMYXN0IDo9IExOZXc7CiAgICBlbmQ7CiAgZW5kOwoKICBwcm9jZWR1cmUgRGlzcG9zZUxpc3QodmFyIEFIZWFkOiBQTm9kZSk7CiAgdmFyCiAgICBMVG9EaXNwb3NlOiBQTm9kZTsKICBiZWdpbgogICAgd2hpbGUgQUhlYWQgPD4gbmlsIGRvCiAgICBiZWdpbgogICAgICBMVG9EaXNwb3NlIDo9IEFIZWFkOwogICAgICBBSGVhZCA6PSBBSGVhZF4uTmV4dDsKCiAgICAgIERpc3Bvc2UoTFRvRGlzcG9zZSk7CiAgICBlbmQ7CgogICAgQUhlYWQgOj0gbmlsOwogIGVuZDsKCiAgcHJvY2VkdXJlIFNwbGl0TGlzdChjb25zdCBBTGVmdEhlYWQ6IFBOb2RlOyBvdXQgQVJpZ2h0SGVhZDogUE5vZGU7IEFDdXRBZnRlcjogSW50ZWdlcik7CiAgdmFyCiAgICBMTGVmdExhc3Q6IFBOb2RlOwogIGJlZ2luCiAgICBMTGVmdExhc3QgOj0gQUxlZnRIZWFkOwoKICAgIHdoaWxlIEFDdXRBZnRlciA+IDAgZG8KICAgIGJlZ2luCiAgICAgIExMZWZ0TGFzdCA6PSBMTGVmdExhc3ReLk5leHQ7CiAgICAgIERlYyhBQ3V0QWZ0ZXIpOwogICAgZW5kOwoKICAgIEFSaWdodEhlYWQgOj0gTExlZnRMYXN0Xi5OZXh0OwogICAgTExlZnRMYXN0Xi5OZXh0IDo9IG5pbDsKICBlbmQ7CgogIHByb2NlZHVyZSBTaG93TGlzdChBSGVhZDogUE5vZGUpOwogIGJlZ2luCiAgICB3aGlsZSBBSGVhZCA8PiBuaWwgZG8KICAgIGJlZ2luCiAgICAgIFdyaXRlKEFIZWFkXi5EYXRhOjIpOwogICAgICBBSGVhZCA6PSBBSGVhZF4uTmV4dDsKICAgIGVuZDsKCiAgICBXcml0ZUxuKCk7CiAgZW5kOwoKdmFyCiAgTExlZnRIZWFkLCBMUmlnaHRIZWFkOiBQTm9kZTsKYmVnaW4KICBDcmVhdGVMaXN0KExMZWZ0SGVhZCwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldKTsKICBTaG93TGlzdChMTGVmdEhlYWQpOwoKICBTcGxpdExpc3QoTExlZnRIZWFkLCBMUmlnaHRIZWFkLCA2KTsKICBTaG93TGlzdChMTGVmdEhlYWQpOwogIFNob3dMaXN0KExSaWdodEhlYWQpOwoKICBEaXNwb3NlTGlzdChMTGVmdEhlYWQpOwogIERpc3Bvc2VMaXN0KExSaWdodEhlYWQpOwplbmQuCg==