The shortest C# solution
Intuition\nWe need to keep track of how many fives and tens we have so that we can give change for different bills. If at any time we don\'t have the necessary 
# Intuition\nWe need to keep track of how many fives and tens we have so that we can give change for different bills. If at any time we don\'t have the necessary bills to give change, we should return `false`.\n\n# Approach\nWe use two variables, `numberOf5` and `numberOf10`, to keep track of the number of 5s and 10s respectively. Initially, we set both of these variables to 0.\n\nThen, we go through the "bills" array and check each bill as follows:\n\n* If `bill[i] == 5`, we increment the `numberOf5` counter.\n* If `bill[i] == 10`, we decrement `numberOf5` and increment `numberOf10`\n* If `bill[i] == 20`, we check if there are still any 10-dollars, if so we decrement `numberOf10` and `numberOf5` otherwise decrease `numberOf5` by three. \n\nAt the end of this process, we check if `numberOf5` and `numberOf10` are negative then it is impossible to provide a change.\n\nTo avoid using many ifs I used tuples and a switch expression.\n\n# Complexity\n- Time complexity:\nO(n). We iterate over the array once.\n\n- Space complexity:\nO(1) because we are using only two \n\n# Code\n\n## C# \n```c#\npublic class Solution {\n    public bool LemonadeChange(int[] bills) {\n        var (numberOf5, numberOf10) = (0, 0);\n        foreach(var bill in bills) {\n            (numberOf5, numberOf10) = bill switch {\n                5 => (numberOf5 + 1, numberOf10),\n                10 => (numberOf5 - 1, numberOf10 + 1),\n                20 when numberOf10 == 0 => (numberOf5 - 3, 0),\n                _ => (numberOf5 - 1, numberOf10 - 1)\n            };\n\n            if (numberOf5 < 0 || numberOf10 < 0) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n}\n```
['C#']