Result: Accepted
Time: 8ms
Memory: 1092kB
#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");
}
}
}