50分,求助
查看原帖
50分,求助
1584056
weejejef楼主2024/11/18 17:00
#include <stdio.h>
int swap1(int num[],int i,int low,int highest,int N)
{   
    int times=0;
    for(int j=0;j<N;j++)
	{
	if(num[j]>highest)
	{
		while(num[i]<low)
		{
			num[i]++;
			num[j]--;
			times++;
		
		}
		
	}
    }
    if(!(num[i]>=low&&num[i]<=highest))
    {
    	for(int j=0;j<N;j++)
    	{
    		while(low<num[j]&&!(num[i]>=low&&num[i]<=highest))
		{
			num[i]++;
			num[j]--;
			times++;
			
		}
		}
	}	
	
    
    return times;
}
int swap2(int num[],int i,int low,int highest,int N)
{
    int times=0;
    for(int j=0;j<N;j++)
	{
	if(num[j]<low)
	{
		while(num[i]>highest)
		{
			num[i]--;
			num[j]++;
			times++;
		}	
	}
    }
    if(!(num[i]>=low&&num[i]<=highest))
    {
    	for(int j=0;j<N;j++)
    	{
    		while(highest>num[j]&&!(num[i]>=low&&num[i]<=highest))
		{
			num[i]--;
			num[j]++;
			times++;
			
		}
		}
	}	
    return times;
}
int main()
{
	int N,highest,low,times=0,target=0;
	scanf("%d",&N);
	int num[N];
	for(int i=0;i<N;i++)
	scanf("%d",&num[i]);
	scanf("%d%d",&low,&highest);
	for(int i=0;i<N;i++)
	{
	if(low<=num[i]&&num[i]<=highest)
	continue;
	else
	{
	if(num[i]<low)
	times+=swap1(num,i,low,highest,N);
	else(num[i]>highest)
	;times+=swap2(num,i,low,highest,N);
    }
    }
    
    for(int i=0;i<N;i++)
    {
    	if(num[i]<low||num[i]>highest)
    	target=1;
	}
	if(!target&&N>=1&&N<=50)
    printf("%d",times);
    else
    printf("%d",-1);
    return 0;
}
2024/11/18 17:00
加载中...