Untitled

 avatar
unknown
plain_text
2 months ago
974 B
2
Indexable
class Solution {
public:
    int mincostTickets(vector<int>& days, vector<int>& costs) {
        int noOfDays= days.size();
        vector<int> minCostDayWise(366, INT_MAX);
        minCostDayWise[0]=0;
        unordered_set<int> travellingDays;
        for(auto day: days) travellingDays.insert(day);
        
        for(int i=1;i<366;i++){
            if(travellingDays.count(i)){
                minCostDayWise[i]= minCostDayWise[i-1]+ costs[0];
                
                int cost7DayBefore= i-7>=0 ? minCostDayWise[i-7]: 0;
                minCostDayWise[i]= min(cost7DayBefore+ costs[1],  minCostDayWise[i]);

                int cost30DayBefore= i-30>=0 ? minCostDayWise[i-30]: 0;
                minCostDayWise[i]= min(cost30DayBefore+ costs[2],  minCostDayWise[i]);
                   
            }else{
                minCostDayWise[i]= minCostDayWise[i-1];
            }

        }

        return minCostDayWise[365];
    }
};
Leave a Comment