金亦辰 • 1年前
using namespace std; const int N=1e5+10; int a[N],b[N],cnt; int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
a[0]=-1;
for(int i=1;i<=n;i++)
{
if(a[i]!=a[i-1]) b[++cnt]=a[i];
}
if(cnt>3) puts("NO");
else if(cnt==3)
{
if(b[3]-b[2]==b[2]-b[1]) puts("YES");
else puts("NO");
}
else puts("YES");
return 0;
}
评论:
using namespace std; int n,a[20],s=0; bool v[20]; void f1(int l){
if(l==n){
int temp[4],c=0;
for(int i=1;i<=3*n;i++){
if(!v[i])temp[++c]=a[i];
}
if(temp[1]+temp[2]>temp[3])s++;
return;
}
int f;
for(int i=1;i<=3*n-2;i++){
if(!v[i]){
f=i;
break;
}
}
v[f]=true;
for(int i=f+1;i<3*n;i++){
if(v[i])continue;
v[i]=true;
for(int j=i+1;j<=3*n;j++){
if(v[j]||a[f]+a[i]<=a[j])continue;
v[j]=true;
f1(l+1);
v[j]=false;
}
v[i]=false;
}
v[f]=false;
} int main(){
cin>>n;
for(int i=1;i<=3*n;i++)cin>>a[i];
sort(a+1,a+3*n+1);
f1(1);
cout<<s;
return 0;