Start: Jun, 27, 2019 08:30:00
2019年度暑期短学期第二天
End: Jun, 27, 2019 11:30:00
Time elapsed:
Time remaining:

Problem_ID: H
Result: Accepted
Time: 8ms
Memory: 1092kB
Author: 2018212212128
In contest: 1275

#include<stdio.h>
int main()
{
	int n,a[110];
	while(scanf("%d",&n)!=EOF)
	{
		int b[110];
		if(n==0)
		break;
		int flag=0,total=0;
		int flag2=0;
		int temp;
		for(int i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
		}
		for(int i=0;i<n;i++)
		{
			if(a[i]<2)
			flag+=1;
			if(a[i]==2)
			flag2+=1;
		}
		for(int i=0;i<n;i++)
		{
			b[i]=a[i];
		}
		for(int i=0;i<n;i++)
		{
			for (int i=0;i<n;i++) // 10个数,10 - 1轮冒泡,每一轮都将当前最大的数推到最后 
      		{ 
            	for (int j=0;j<n-i;j++) // 9 - i,意思是每当经过一轮冒泡后,就减少一次比较 
            	if (a[j] > a[j+1]) 
            	{ 
                  temp=b[j]; 
                  b[j]=b[j+1]; 
                  b[j+1]=temp; 
            	} 
      		} 
		}
		if(flag>0)
		{
			printf("-1\n");
		}
		else if(flag=0&&flag2>0)
		{
			for(int i=0;i<n;i++)
				total+=a[i];
			printf("%d\n",total);
		}
		else
		{
			for(int i=0;i<n;i++)
				total+=a[i];
			if(n>1)
				printf("%d\n",total-b[0]+2);
			else
				printf("2\n");
		}
	}
}