class Solution {
public:
int mincostTickets(vector<int>& days, vector<int>& costs) {
int dp[400];
memset(dp, 0, sizeof dp);dp[0]=costs[0];
for(int i=1;i<days.size();i++){
dp[i]=dp[i-1]+costs[0];
for(int j=0;j<i;j++){
if(days[i]-days[j]<=6){
if(j != 0)
dp[i]=min(dp[i],dp[j-1]+costs[1]);
else dp[i]=min(dp[i],costs[1]);
}
if(days[i]-days[j]<=29){
if(j != 0)
dp[i]=min(dp[i],dp[j-1]+costs[2]);
else dp[i]=min(dp[i],costs[2]);
}
}
}
return dp[days.size()-1];
}
};