Finished part 2 of day 7, still binary search with a slightly harder cost function

This commit is contained in:
2021-12-22 17:04:10 +01:00
parent 67be539f92
commit 4789d7ce32

View File

@@ -15,6 +15,17 @@ int fuel_cost(int n){
return result;
}
int updated_fuel_cost(int n){
int result = 0;
for(auto &crab : crab_pos){
int dif = abs(crab - n);
result += dif * (dif + 1) / 2;
}
return result;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
@@ -38,6 +49,27 @@ int main(){
int target_coord = min(m2, m1);
cout << fuel_cost(target_coord) << endl;
upper = crab_pos.back();
lower = crab_pos.front();
m1 = (upper + lower) / 2;
m2 = (upper + lower) / 2 + 1;
while(upper - lower > 1){
if(updated_fuel_cost(m1) < updated_fuel_cost(m2)){
upper = m1;
} else{
lower = m2;
}
m1 = (upper + lower) / 2;
m2 = (upper + lower) / 2 + 1;
// cout << m1 << ", fuel: " << updated_fuel_cost(m1) << " " << m2 << ", fuel: " << updated_fuel_cost(m2) << endl;
}
target_coord = min(m1, m2);
cout << updated_fuel_cost(target_coord) << endl;
cout << flush;
return 0;