Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program k;
- type
- PListQueue = ^TListQueue;
- PListNode = ^TListNode;
- TListQueue = record
- head: PListNode;
- tail: PListNode;
- size: int64;
- end;
- TListNode = record
- Next: PListNode;
- Data: int64;
- end;
- function newListQueue(): PListQueue;
- var
- p: PListQueue;
- begin
- New(p);
- if (p = nil) then
- exit(nil);
- p^.head := nil;
- p^.tail := nil;
- p^.size := 0;
- exit(p);
- end;
- function pushData(Queue: PListQueue; const Data: int64): boolean;
- var
- node: plistnode;
- begin
- new(node);
- if (node = nil) then
- exit(False);
- node^.Next := nil;
- node^.Data := Data;
- if (queue^.tail <> nil) then
- Queue^.tail^.Next := node;
- Queue^.tail := node;
- if Queue^.head = nil then
- Queue^.head := Queue^.tail;
- queue^.size += 1;
- exit(True);
- end;
- function popData(Queue: PListQueue): boolean;
- var
- node: plistnode;
- begin
- if (queue^.size = 0) or (queue^.head = nil) then
- exit(False);
- node := Queue^.head;
- Queue^.head := Queue^.head^.Next;
- dispose(node);
- Queue^.size -= 1;
- exit(True);
- end;
- function getData(Queue: PListQueue): int64;
- begin
- exit(queue^.head^.Data);
- end;
- function getSize(const Queue: PListQueue): int64;
- begin
- exit(queue^.size);
- end;
- var
- tmax, t, n, a, b, tm, i, maxsize, a1, ii: integer;
- p: PListQueue;
- begin
- Assign(input, 'input.txt');
- Assign(output, 'output.txt');
- reset(input);
- rewrite(output);
- Read(tmax, n);
- Read(a, b);
- p := newListQueue();
- pushdata(p, a + b);
- for i := 2 to n do
- begin
- Read(a, b);
- if a > p^.tail^.Data then
- pushdata(p, a + b)
- else
- pushdata(p, (getdata(p) + b));
- while (a >= getdata(p)) do
- begin
- popdata(p);
- end;
- if getSize(p) -1> maxsize then
- begin
- maxsize := getSize(p)-1;
- ii := i;
- end;
- if p^.tail^.Data >= tmax then
- break;
- end;
- if p^.tail^.Data >= tmax then
- begin
- tm := tmax;
- if ii = i then
- maxsize += n - i;
- end
- else
- tm := p^.tail^.Data;
- Write(maxsize, ' ', tm);
- Close(input);
- Close(output);
- end.
Advertisement
Add Comment
Please, Sign In to add comment