#include #include #include #include using namespace std; ifstream input_stream; ofstream output_stream; uint64_t dequeSum(deque &d) { return accumulate(d.begin(), d.end(), 0); } int main() { input_stream.open("input.txt"); output_stream.open("output.txt"); uint16_t P, T, N; input_stream >> P; input_stream >> T; input_stream >> N; deque bacteria; bacteria.push_front(P); uint16_t i; uint64_t mature = 0; // Populate list until death of first generation for (i=1; i < T && i <= N; i++) { // Reproduction bacteria.push_front(mature); // Maturity mature += bacteria[1]; } // Run loop considering death until experiment is complete for(i; i <= N; i++) { // Reproduction bacteria.push_front(mature); // Death mature -= bacteria.back(); bacteria.pop_back(); // Maturity mature += bacteria[1]; } output_stream << dequeSum(bacteria) << endl; input_stream.close(); output_stream.close(); return 0; }