/* 2073. Time Needed to Buy Tickets */ #include #include #include using std::vector; class Solution { public: int timeRequiredToBuy(vector& tickets, int k) { int time = 0; int i = 0; int limit = (int)tickets.size(); while ( true ) { if ( i >= limit ) { i = 0; } int cur = tickets[i]; if ( cur == 0 ) { ++i; continue; } --cur; ++time; if ( i == k && cur == 0 ) { return time; } tickets[i] = cur; ++i; } return time; } }; void r(vector& tickets, int k, int exp) { std::cout << "Solution().timeRequiredToBuy(["; for ( uint64_t i = 0; i < tickets.size(); ++i ) { if ( i == 0 ) { std::cout << tickets[i]; continue; } std::cout << ", " << tickets[i]; } std::cout << "], " << k << ") = " << Solution().timeRequiredToBuy(tickets, k) << " | exp: " << exp; std::cout << "\n"; }; int main(void) { vector t1 = {2, 3, 2}; r(t1, 2, 6); vector t2 = {5, 1, 1, 1}; r(t2, 0, 8); return 0; }