(资料图)
1、我觉得你写得有点乱给你看我的。
2、我是先快排。
3、再扫描#includeusing namespace std;long long a[50001]={0},b[50001]={0};void quicksort(int low,int high){ int mid=a[(low+high)/2],i=low,j=high,t; while(i<=j) { while(a[i]mid)j--; if(i<=j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;} } if(lowi)quicksort(i,high);} int main(){ long long i,j,n,maxx=0,minn=0; cin>>n; for(i=1;i<=n;i++)scanf("%d",&a[i]); quicksort(1,n); for(i=1;i<=n;i++)b[i]=a[i]; i=2; while(i<=n) {maxx=a[i-1]*a[i]+1; if(i==n)break; j=i; while(a[j+1]=1) {minn=b[i+1]*b[i]+1; if(i==1)break; j=i; while(b[j-1]>minn&&j-1>=1)j--; b[j]=minn; i--;} cout<
本文到此分享完毕,希望对大家有所帮助。