#7 part 2 on my first try, too. Daaaang.
This commit is contained in:
parent
ce7229c13c
commit
7ef32aafcb
@ -150,6 +150,25 @@ unsigned long PartOne(File *file, unsigned long &grand_total)
|
|||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PartTwo(File *file, unsigned long at_least, File *&smallest)
|
||||||
|
{
|
||||||
|
Folder *folder = dynamic_cast<Folder*>(file);
|
||||||
|
if(folder)
|
||||||
|
{
|
||||||
|
if(folder->Size() >= at_least && folder->Size() < smallest->Size())
|
||||||
|
{
|
||||||
|
std::cout << "New smallest size of " << folder->Size() << " by folder \""
|
||||||
|
<< folder->Filename() << "\"." << std::endl;
|
||||||
|
smallest = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(File *file : folder->Files())
|
||||||
|
PartTwo(file, at_least, smallest);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::ifstream ifs("data.txt");
|
std::ifstream ifs("data.txt");
|
||||||
@ -226,7 +245,20 @@ int main()
|
|||||||
unsigned long grand_total = 0;
|
unsigned long grand_total = 0;
|
||||||
PartOne(&root, grand_total);
|
PartOne(&root, grand_total);
|
||||||
|
|
||||||
std::cout << "Grand Total: " << grand_total << std::endl;
|
std::cout << "Grand Total (part 1): " << grand_total << std::endl;
|
||||||
|
|
||||||
|
const unsigned long max_space = 70000000;
|
||||||
|
const unsigned long space_needed = 30000000;
|
||||||
|
const unsigned long currently_used = root.Size();
|
||||||
|
const unsigned long currently_unused = max_space - currently_used;
|
||||||
|
const unsigned long amt_to_remove = space_needed - currently_unused;
|
||||||
|
|
||||||
|
File *file_to_remove = &root;
|
||||||
|
PartTwo(&root, amt_to_remove, file_to_remove);
|
||||||
|
|
||||||
|
std::cout << "Remove \"" << file_to_remove->Filename() << "\" to free up "
|
||||||
|
<< file_to_remove->Size() << " which is the smallest amount >= "
|
||||||
|
<< amt_to_remove << " (part 2)." << std::endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user