https://codeforces.com/contest/1574/problem/B
求一下可以凑出来的上下边界。
看m在不在区间里即可。
最大边界就是相同的都连在一块 即 a1-1+a2-1+a3-1
最小的边界就是 让最多的字符和其它的字符俩俩配对,这样就可以依次打乱,最后剩下的-1就是最小边界。
#include<bitsdc++.h>
using namespace std;
typedef long long int LL;
typedef pair<int,int> PII;
bool cmp(LL a,LL b) {return a>b;}
int main(void)
{
int t; cin>>t;
while(t--)
{
LL a[3],m;
cin>>a[0]>>a[1]>>a[2]>>m;
sort(a,a+3,cmp);
int cnt2=a[0]+a[1]+a[2]-3;
int cnt1=a[0]-a[1]-a[2]-1;
if(cnt2>=m&&cnt1<=m) puts("YES");
else puts("NO");
}
return 0;
}