Advertisement
Lamisk

K

Oct 10th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #define FOR(i,a,b) for(int i=a;i<=b;++i)
  2. #define FOD(i,a,b) for(int i=a;i>=b;--i)
  3. int const MAX =1000;
  4. int A[MAX],B[MAX],C[MAX],L[MAX];
  5. int makeNum(std::string str)
  6. {
  7. int n=str.length();
  8. int rs=0;
  9. FOD(i,n-1,0) rs=rs*10+str[i]-'0';
  10. return rs;
  11. }
  12.  
  13. int calTime(int year, int month, int day, int hour , int minute)
  14. {
  15. if (month < 3)
  16. {
  17. year--;
  18. month += 12;
  19. }
  20. return (365*year + year/4 - year/100 + year/400 + (153*month - 457)/5 + day - 306) *24*60 + (hour*60+minute);
  21. }
  22. void init(std::vector<std::vector<std::string>> taskList)
  23. {
  24. int n=taskList[0].size();
  25. int minNum=1000009;
  26. FOR(i,0,n-1)
  27. {
  28. minNum=min(minNum,makeNum(taskList[i][0].substr(9,4)))-1;
  29. }
  30. FOR(i,0,n-1)
  31. {
  32. C[i]=makeNum(taskList[i][2]);
  33. B[i]=calTime(makeNum(taskList[i][1].substr(9,4)),makeNum(taskList[i][1].substr(7,2)),makeNum(taskList[i][1].substr(5,2)),makeNum(taskList[i][1].substr(2,2)),makeNum(taskList[i][1].substr(0,2)))-calTime(minNum,0,0,0,0);
  34. A[i]=calTime(makeNum(taskList[i][0].substr(9,4)),makeNum(taskList[i][0].substr(7,2)),makeNum(taskList[i][0].substr(5,2)),makeNum(taskList[i][0].substr(2,2)),makeNum(taskList[i][0].substr(0,2)))-calTime(minNum,0,0,0,0);
  35. }
  36. }
  37.  
  38. int maximumEarning(std::vector<std::vector<std::string>> taskList)
  39. {
  40. init(taskList);
  41. int n=taskList[0].size();
  42. FOR(i,0,n-1)
  43. {
  44. L[i]=C[i];
  45. FOR(j,0,i-1)
  46. {
  47. if (B[j]<=A[i] && L[i]<L[j]+C[i]) L[i]=L[j]+C[i];
  48. }
  49. }
  50. return L[n-1];
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement