|
|
back to boardwhy carsh? #include<stdio.h> #include<stdlib.h> int split(int st[],int low,int high){ /*____________________*/ int k,i=low; int temp; int x=st[low]; for(k=low+1;k<=high;k++) if (st[k]<=x){ i=i+1; if(i!=k){ temp=st[i]; st[i]=st[k]; /*___sort____*/ st[k]=temp; } } {temp=st[low];st[low]=st[i];st[i]=temp;} return i; } void sort(int st[],int low,int high){ int k; if(low<high){ k=split(st,low,high); sort(st,low,k-1); sort(st,k+1,high); } } /*___________________*/ int main() { int i,j,stone; /*the number of stone*/ int weight[20]={0}; int sum,average; int min,max,value,temp=0; while(scanf("%d",&stone)!=EOF){ for(sum=0,i=1;i<=stone;i++){ scanf("%d",&weight[i]); sum=sum+weight[i]; } average=sum/2; sort(weight,1,stone); for(max=0,i=1;i<=stone;i++){ max=max+weight[i]; if(max>=average) break; } for(min=0,j=i+1;j<=stone;j++) min=min+weight[j]; if(min>max){temp=max;max=min;min=temp;} for(value=sum,i=1;(max-min)>=0;i++){ if((max-min)<value) value=max-min; max-=weight[i]; min+=weight[i]; } printf("%d\n",value); } return 0; } Edited by author 02.11.2007 22:26 Edited by author 02.11.2007 22:26 |
|
|