Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type
- Pnode = ^Node;
- Node = record
- count: integer;
- next: Pnode;
- end;
- function CreateNode(NewCount: integer): Pnode;
- var
- NewNode: Pnode;
- begin
- new(NewNode);
- NewNode^.count := NewCount;
- NewNode^.next := nil;
- result := NewNode;
- end;
- //пидоры
- procedure AddFirst(var head: Pnode; NewNode: Pnode);
- begin
- NewNode^.next := head;
- head := NewNode;
- end;
- procedure AddAfter(p, NewNode: Pnode);
- begin
- NewNode^.next := p^.next;
- p^.next := NewNode;
- end;
- procedure AddBefore(var head: Pnode; p, NewNode: Pnode);
- var
- q: Pnode;
- begin
- q := head;
- if p = head then AddFirst(head, NewNode)
- else
- begin
- while (q <> nil) and (q^.next <> p) do
- q := q^.next;
- if q <> nil then AddAfter(q, NewNode);
- end;
- end;
- function FindPlace(head: Pnode; Count: integer): Pnode;
- var
- q: Pnode;
- begin
- q := head;
- while (q <> nil) and (q^.count < Count) do
- q := q^.next;
- result := q;
- end;
- var
- head, NewNode, q: Pnode;
- w: string;
- z: integer;
- f: text;
- begin
- Head := nil;
- Assign(f, 'input.txt');
- reset(f);
- readln(f, w);
- z := StrToInt(w);
- NewNode := CreateNode(z);
- AddFirst(head, NewNode);
- While True do
- begin
- readln(f, w);
- z := StrToInt(w);
- if z = 0 then break
- else
- begin
- NewNode := CreateNode(z);
- q := FindPlace(head, z);
- AddBefore(head, q, NewNode);
- end;
- end;
- Close(f);
- q := head;
- Assign(f, 'output.txt');
- rewrite(f);
- while q <> nil do
- begin
- write(f,q^.count,' ');
- q := q^.next;
- end;
- close(f);
- end.
Add Comment
Please, Sign In to add comment