B. Vasya and Isolated Vertices

B. Vasya and Isolated Vertices

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Vasya has got an undirected graph consisting of n

vertices and m edges. This graph doesn't contain any self-loops or multiple edges. Self-loop is an edge connecting a vertex to itself. Multiple edges are a pair of edges such that they connect the same pair of vertices. Since the graph is undirected, the pair of edges (1,2) and (2,1)

is considered to be multiple edges. Isolated vertex of the graph is a vertex such that there is no edge connecting this vertex to any other vertex.

Vasya wants to know the minimum and maximum possible number of isolated vertices in an undirected graph consisting of n

vertices and m

edges.

Input

The only line contains two integers n

and m (1≤n≤105,0≤m≤n(n−1)2)

.

It is guaranteed that there exists a graph without any self-loops or multiple edges with such number of vertices and edges.

Output

In the only line print two numbers min

and max

— the minimum and maximum number of isolated vertices, respectively.

Examples

Input

Copy

4 2

Output

Copy

0 1

Input

Copy

3 1

Output

Copy

1 1

Note

In the first example it is possible to construct a graph with 0

isolated vertices: for example, it should contain edges (1,2) and (3,4). To get one isolated vertex, we may construct a graph with edges (1,2) and (1,3)

.

In the second example the graph will always contain exactly one isolated verte

题解:

最大孤立点:运用完全图m=n*(n-1)/2得到公式----maxi = n-(1+sqrt(1+8*m))/2;

最小孤立点:mini = n-2*m;    (注意:当mini < 0时,需要让mini=0)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <set>
#include <sstream>
#include <stack>
using namespace std;

int main()
{
    long long n,m;
    while(cin>>n>>m){
        long long maxi = 0,mini = 0;
        maxi = n-(1+sqrt(1+8*m))/2;
        mini = n-2*m;
        if(mini < 0) mini = 0;
        if(m == 0){
            maxi = n;
            mini = n;
        }
        cout<<mini<<" "<<maxi<<endl;
    }

    return 0;
}

 

全部评论

相关推荐

2025-12-19 21:53
门头沟学院 Java
想做OpenGL:不要一来就把自己定位这么低吧,把大厂当成目标,不断去学技术做项目,最后你至少能学到能找到中小厂的技术水平,你一上来就找这种两千块还要前后端都会的,其实对你用处不会很大,真去了也是打杂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务