|
|
back to boardwhy wrong??? /* Here is my code */ #include <stdio.h> #include <stdlib.h>//abs #include <stdint.h>//uint32_t #define MIN(X,Y) ( ((X)<(Y))? (X) :(Y) ) #define Array_Size(arr) (sizeof(arr)/sizeof(arr[0])) uint32_t sum_continues(int f_index , int last_index , uint32_t *arr_num) ; uint32_t sum_remain(int f_index , int last_index , int single_num_index , uint32_t *arr_num , int arr_size ) ; uint32_t min_deff(uint32_t *arr_num , int arr_size); int main() { int arr_size ; scanf("%d" , &arr_size) ; while(getchar() != '\n') ; uint32_t arr_num[arr_size] ; int i = 0 ; while(i<arr_size){ scanf("%d " , &arr_num[i++]) ; } int min_def = min_deff(arr_num , arr_size); printf("%d" , min_def) ; } uint32_t sum_continues(int f_index , int last_index , uint32_t *arr_num) { uint32_t sum = 0 ; for( int i = f_index ; i<last_index ; i++) { sum += arr_num[i] ; } return sum ; } uint32_t sum_remain(int f_index , int last_index , int single_num_index, uint32_t *arr_num , int arr_size ) { uint32_t sum =0 ; for(int i= 0 ; i<arr_size ; i++) { if( i == single_num_index || (i>= f_index && i<last_index ) ) continue ; sum += arr_num[i] ; } return sum ; } uint32_t min_deff(uint32_t *arr_num , int arr_size) { uint32_t first_pile = 0 , sec_pile = 0 ; uint32_t min_def = UINT32_MAX ; int j ; for(int k = 0 ; k< (arr_size-1) ; k++) { for( int i = 0 ; i< (arr_size-k) ; i++) { if( k== 0 && i>0) break ; uint32_t con_sum = sum_continues(i , i+k , arr_num) ; for( j =i+k ; j<arr_size ; j++) { first_pile = con_sum + arr_num[j] ; sec_pile = sum_remain(i , i+k , j , arr_num , arr_size) ; min_def = MIN(abs(first_pile-sec_pile) , min_def) ; } } } return min_def ; } |
|
|