1 条题解

  • 0
    @ 2024-9-15 20:05:22
    #include<bits/stdc++.h>
    #include<cstring>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #include<map>
    #define ll long long
    #define lhs printf("\n");
    using namespace std;
    const int N=3e5+10;
    const int M=2024;
    const int inf=0x3f3f3f3f;
    int n;
    int ans[N];
    int maxx,maxxn;
    struct node
    {
    	int x,num,num1;
    }a[N];
    bool cmp(node xx,node yy)
    {
    	return xx.x<yy.x;
    }
    int main()
    {
    //	freopen("10.in","r",stdin);
    //	freopen("10.out","w",stdout);
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i].x);
    		a[i].num=a[i].num1=i;
    	}
    	sort(a+1,a+n+1,cmp);
    	//都不删 
    	ans[1]=abs(a[n].num-a[1].num);
    	//删第一个  1
    	if(a[1].num<a[n].num)
    	{
    		a[n].num1--;
    	} 
    	if(a[1].num<a[2].num)
    	{
    		a[2].num1--;
    	} 
    	ans[2]=abs(a[n].num1-a[2].num1);
    	a[n].num1=a[n].num;
    	a[2].num1=a[2].num;
    	//删前两个 1 2
    	
    	if(a[1].num<a[n].num)
    	{
    		a[n].num1--;
    	} 
    	if(a[1].num<a[3].num)
    	{
    		a[3].num1--;
    	} 
    	if(a[2].num<a[n].num)
    	{
    		a[n].num1--;
    	} 
    	if(a[2].num<a[3].num)
    	{
    		a[3].num1--;
    	} 
    	ans[3]=abs(a[n].num1-a[3].num1);
    	a[n].num1=a[n].num;
    	a[3].num1=a[3].num;
    	//删最后一个 n
    	if(a[n].num<a[1].num)
    	{
    		a[1].num1--;
    	} 
    	if(a[n].num<a[n-1].num)
    	{
    		a[n-1].num1--;
    	} 
    	ans[4]=abs(a[n-1].num1-a[1].num1);
    	a[n-1].num1=a[n-1].num;
    	a[1].num1=a[1].num;
    	//删最后两个 n n-1
    	if(a[1].num>a[n].num)
    	{
    		a[1].num1--;
    	} 
    	if(a[1].num>a[n-1].num)
    	{
    		a[1].num1--;
    	} 
    	if(a[n-2].num>a[n].num)
    	{
    		a[n-2].num1--;
    	} 
    	if(a[n-2].num>a[n-1].num)
    	{
    		a[n-2].num1--;
    	} 
    	ans[5]=abs(a[n-2].num1-a[1].num1);
    	a[n-2].num1=a[n-2].num;
    	a[1].num1=a[1].num;
    	//前一个 后一个 1 n
    	if(a[2].num>a[n].num)
    	{
    		a[2].num1--;
    	} 
    	if(a[2].num>a[1].num)
    	{
    		a[2].num1--;
    	} 
    	if(a[n-1].num>a[n].num)
    	{
    		a[n-1].num1--;
    	} 
    	if(a[n-1].num>a[1].num)
    	{
    		a[n-1].num1--;
    	} 
    	ans[6]=abs(a[n-1].num1-a[2].num1);
    	for(int i=1;i<=6;i++)
    	{
    		if(ans[i]>maxx)
    		{
    			maxx=ans[i];
    			maxxn=i;
    		}
    	}
    	printf("%d\n",maxx);
    	if(maxxn==2)
    	{
    		printf("%d",a[1].x); 
    	}
    	else if(maxxn==3)
    	{
    		printf("%d %d",a[1].x,a[2].x);
    	}
    	else if(maxxn==4)
    	{
    		printf("%d",a[n].x);
    	}
    	else if(maxxn==5)
    	{
    		printf("%d %d",a[n-1].x,a[n].x);
    	}
    	else if(maxxn==6)
    	{
    		printf("%d %d",a[1].x,a[n].x);
    		
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    3195
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    2
    已通过
    1
    上传者