0分,样例有过,请各位大佬帮忙看看
查看原帖
0分,样例有过,请各位大佬帮忙看看
1403564
lvcb248楼主2024/9/15 18:02
#include<stdio.h>
#include<string.h>
#include<math.h> 
void quick(int a[],int left,int right);
void quick(int a[],int left,int right)
{
	int i=left,j=right;
	int min=a[(left+right)/2];
	int m;
	while(i<=j)
	{
		while(a[i]<min)
		{
			i++;
		}
		while(a[j]>min)
		{
			j--;
		}
		if(i<=j)
		{
			m=a[i];
			a[i]=a[j];
			a[j]=m;
			i++;
			j--;		
		}
	}
	if(j>left)
	{
		quick( a,left,j);
	}
	if(right>i)
	{
		quick( a,i,right);
	}
}

int se(int a[],int len);
int se(int a[],int len)
{
	quick(a,1,len);
	int i=1,n=0;
	for(i=1;i<=len;i++)
	{
		n=n+a[i];
	} 
	int m=0,u=0;
	if(len==1)
	{
	    u=0;
	}else
	{
	   u=n-2*a[1];
	   m=a[1];
	  for(i=2;i<=len;i++)
	  {
	  	m=m+a[i];
	  	if(fabs(n-2*m)<u)
	  	{
	  	  u=fabs(n-2*m);	
		}
	  }
     	u=(n-u)/2;
	
	}
	return n-u;
}

int main()
{
   int s1,s2,s3,s4;
   int res=0;
   scanf("%d %d %d %d",&s1,&s2,&s3,&s4);
   int a[s1+1];
   int b[s2+1];
   int c[s3+1];
   int d[s4+1];
   int i=1; 
   for(i=1;i<=s1;i++)
   {
   	scanf("%d",&a[i]);
   }
   
   for(i=1;i<=s2;i++)
   {
   	scanf("%d",&b[i]);
   }
   
   for(i=1;i<=s3;i++)
   {
   	scanf("%d",&c[i]);
   }
   
   for(i=1;i<=s4;i++)
   {
   	scanf("%d",&d[i]);
   }
   
   res=res+se(a,s1)+se(b,s2)+se(c,s3)+se(d,s4);
   
   
   printf("%d",res);
	return 0; 
 }  
2024/9/15 18:02
加载中...