AC自动机
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Zyq发明了一个新算法帮助他刷题,由于代码在刷题时的良好表现,Zyq给他取名为AC自动机。

AC自动机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序。每秒,AC自动机的代码生成模块会有两种可能的结果:

  • 写了x行代码;
  • 心情不好,删掉了之前写的y行代码。如果y大于当前代码长度,则相当于全部删除。

对于一个题库,存在某个固定的长度n,一旦AC自动机在某秒结束时积累了大于等于n行的代码,它就会自动提交并AC此题,然后新建一个文件(即弃置之前的所有代码)并开始写下一题。Zyq在某个 OJ 上跑了一天的AC自动机,得到了很多条关于写代码的日志信息。他突然发现自己没有记录这个题库的n究竟是多少。所幸他通过自己在题库上的Rank知道了AC自动机一共ACk道题,希望你计算n可能的最小值和最大值。

输入描述:

第一行两个整数L,k,表示刷题机的日志一共有l行,一共了切了k题。

第二行L个整数x1,x2,x3……xL。xi>0表示写了xi行代码,xi<0表示删除了这道题的xi行代码。

输出描述:

输出两个数a,b分别代表n可能的最小值和最大值。如果不存在这样的n则输出-1。
示例1

输入

复制
4 2
2
5
-3
9

输出

复制
3 7

备注:

【数据范围与约定】

对于100%的数据,L≤100000,k≤10000,-109≤xi≤109