Bounded buffer producer consumer
Simulate a single bounded buffer of capacity k shared by producers and consumers. You are given an ops list of strings, each either "P" (a producer tries to enqueue one item) or "C" (a consumer tries to dequeue one item). The buffer starts empty. A "P" succeeds only if the buffer is not full; a "C" succeeds only if the buffer is not empty. Operations that would block are dropped (skipped) rather than waiting. Process ops left to right and return a pair [final_size, completed] where final_size is the number of items left in the buffer and completed is the count of operations that succeeded.
simulate_buffer(k: int, ops: list[str]) → list[int][2,["P","P","P","C","C","C"]]out[0,4]State your approach and its time/space complexity out loud before you optimize. Handle the edge cases (empty input, duplicates, overflow), and say why you chose this over the brute force. Green tests are the floor, not the grade.
[2,["P","P","P","C","C","C"]][0,4]not run yetsample