给定一个序列,问你有没有可能重新排列这个序列使得所有长度小于等于 22 的子区间和不等于 00。
using namespace std;
#include <string>
long long a[500000];
long long minn,maxn;
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&a[i]);
if(a[i]<0)
minn=a[i];
else if(a[i]==0)
{
cout<<"NO";
return 0;
}
else
maxn=a[i];
}
long long fmax=minn,fmin=maxn;
for(int i=0;i<n;i++)
{
if(a[i]>fmax&&a[i]<0)
{
fmax=a[i];
}
if(a[i]<0&&a[i]<minn)
{
minn=a[i];
}
if(a[i]>0&&a[i]<fmin)
{
fmin=a[i];
}
if(a[i]>0&&a[i]>maxn)
{
maxn=a[i];
}
}
if(maxn==fmin&&minn==fmax&&minn+maxn==0)
cout<<"NO";
else
cout<<"YES";
}