[题目传送门]
首先考虑最小值,因为我们要让所有的边都利用起来,每一条边都与一个没连过的节点相连。
最大值也很简单,因为我们要让没有连上的点尽可能的多,所以要尽可能的浪费边,也就是说构造一个 阶完全图,使得
注意:要开 long long!!!
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
ll calc(){
for(ll i=1;i<=m;i++){
if(i*(i+1)/2>=m)return n-i-1;
}
}
int main(){
scanf("%lld%lld",&n,&m);
ll sma=n-2*m;
if(n<=2*m)sma=0;
ll big=calc();
if(m==0){
sma=n;
big=n;
}
printf("%lld %lld",sma,big);
return 0;
}