int merge(){
int k = vec.size() - 2 ;
for(int i = 0 ; i + 2 < vec.size() ; ++ i){
if(vec[i] <= vec[i+2]){
k = i ;
break ;
}
}
int te = vec[k] + vec[k+1] ;
vec.erase(vec.begin() + k) ;
vec.erase(vec.begin() + k) ;
int t = -1 ;
for(int i = k - 1 ; i >= 0 ; -- i ){
if(vec[i] >= te){
t = i ;
break ;
}
}
vec.insert(vec.begin() + 1 + t,te) ;
return te ;
}
void solve(){
cin >> n ;
int t ;
for(int i = 1; i <= n ; ++ i){
cin >> t ;
vec.push_back(t) ;
}
for(int i = 1; i < n ; ++ i){
ans += merge() ;
}
cout << ans << endl ;
}
Comments NOTHING