Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FOR(i,a,b) for(int i=a;i<=b;++i)
- #define FOD(i,a,b) for(int i=a;i>=b;--i)
- int const MAX =1000;
- int A[MAX],B[MAX],C[MAX],L[MAX];
- int makeNum(std::string str)
- {
- int n=str.length();
- int rs=0;
- FOD(i,n-1,0) rs=rs*10+str[i]-'0';
- return rs;
- }
- int calTime(int year, int month, int day, int hour , int minute)
- {
- if (month < 3)
- {
- year--;
- month += 12;
- }
- return (365*year + year/4 - year/100 + year/400 + (153*month - 457)/5 + day - 306) *24*60 + (hour*60+minute);
- }
- void init(std::vector<std::vector<std::string>> taskList)
- {
- int n=taskList[0].size();
- int minNum=1000009;
- FOR(i,0,n-1)
- {
- minNum=min(minNum,makeNum(taskList[i][0].substr(9,4)))-1;
- }
- FOR(i,0,n-1)
- {
- C[i]=makeNum(taskList[i][2]);
- 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);
- 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);
- }
- }
- int maximumEarning(std::vector<std::vector<std::string>> taskList)
- {
- init(taskList);
- int n=taskList[0].size();
- FOR(i,0,n-1)
- {
- L[i]=C[i];
- FOR(j,0,i-1)
- {
- if (B[j]<=A[i] && L[i]<L[j]+C[i]) L[i]=L[j]+C[i];
- }
- }
- return L[n-1];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement