服了,这corner/killer点跟我有仇是吧
C题:
#include<bits/stdc++.h>
long long n,a,b,mn=1e18,mx=0;
int main()
{
scanf("%lld%lld%lld",&n,&a,&b);
for(int i=1;i<=n;i++)
{
long long x;
scanf("%lld",&x);
x%=(a+b);
mx=std::max(mx,x);
mn=std::min(mn,x);
}
puts(((mx-mn)<a)?"Yes":"No");
return 0;
}

D题:
#include<bits/stdc++.h>
long long c,ansa,ansb;
int a,b,ans,x[66],A[66],B[66];
int main()
{
scanf("%d%d%lld",&a,&b,&c);
for(int i=0;i<=59;i++)
if(c&(1ll<<i)) x[i]=1,ans++;
int k=a+b-ans;
if(a+b<ans||k%2==1||a<k/2||b<k/2) puts("-1");
else
{
int flag=0;
for(int i=0;i<=59;i++)
if(!x[i]&&flag<k/2) a--,b--,flag++,A[i]=B[i]=1;
for(int i=0;i<=59;i++)
if(x[i]&&a) A[i]=1,a--;
if(a==0)
{
for(int i=0;i<=59;i++)
if(x[i]&&!A[i]&&b) b--,B[i]=1;
}
for(int i=0;i<=59;i++)
{
if(A[i]) ansa+=(1ll<<i);
if(B[i]) ansb+=(1ll<<i);
}
printf("%lld %lld\n",ansa,ansb);
}
return 0;
}
