Advertisement
pratiyush7

Untitled

Nov 3rd, 2021
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.72 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int mincostTickets(vector<int>& days, vector<int>& costs) {
  4.         int n = days.size();
  5.         vector<int> dp(n+1,0);
  6.         dp[n-1] = min(costs[0],min(costs[1],costs[2]));
  7.         for(int i=n-2;i>=0;i--)
  8.         {
  9.             int pos1 = upper_bound(days.begin(),days.end(),days[i])-days.begin();
  10.             int pos2 = upper_bound(days.begin(),days.end(),days[i]+6)-days.begin();
  11.             int pos3 = upper_bound(days.begin(),days.end(),days[i]+29)-days.begin();
  12.             int cost1 = costs[0]+dp[pos1];
  13.             int cost2 = costs[1]+dp[pos2];
  14.             int cost3 = costs[2]+dp[pos3];
  15.             dp[i] = min(cost1,min(cost2,cost3));
  16.         }
  17.         return dp[0];
  18.     }
  19. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement