工作时长
标题:工作时长 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
小明上班打卡时间为AA:BB, 下班打卡时间为CC:DD,请问小明上班时长?(注:中午12:00到14:00为午休时间,18:00到19:00是晚餐时间,不计入工作时长。)
#include<iostream> #include<string> using namespace std; int cros(int a1, int a2, int b1, int b2) { if (a2 <= b1) { return 0; } if (b1 >= a1 && b1 <= a2 && a2 <= b2) { return a2 - b1; } if (b1 >= a1 && a2 >= b2) { return b2 - b1; } if (a1 >= b1 && a2 <= b2) { return a2 - a1; } if (a1 <= b2 && a2 >= b2) { return b2 - a1; } return 0; } int main() { string a; string b; cin>>a>>b; int H1 = stoi(a.substr(0, 2)); int M1 = stoi(a.substr(3, 2)); int H2 = stoi(b.substr(0, 2)); int M2 = stoi(b.substr(3, 2)); int a1 = H1 * 60 + M1; int a2 = H2 * 60 + M2; if (a2 < a1) { a2 += 24 * 60; } int ans = a2 - a1; ans -= cros(a1, a2, 12 * 60, 14 * 60); ans -= cros(a1, a2, 18 * 60, 19 * 60); int H = ans / 60; int M = ans % 60; if (H < 10) { cout<<"0"; } cout<<to_string(H)<<":"; if (M < 10) { cout<<"0"; } cout<<to_string(M); return 0; } int f() { int H1, H2, M1, M2; if (H1 < 12 && H2 < 14) { H2 = 12; } else if (H1 < 12 && H2 > 14 && H2 < 18) { H2 = H2 - 2; } else if (H1 < 12 && H2 > 18 && H2 < 19) { H2 = 18 - 2; } else if (H1 < 12 && H2 > 19) { H2 = H2 - 3; } if (H1 > 12 && H1 < 14) { H1 = 14; } if (H2 > 18 && H2 < 19) { H2 = 18; } int H = 0; int M = 0; if (M2 >= M1) { H = H2 - H1; M = M2 - M1; } else { M = M2 + 60 - M1; H = H2 - 1 - H1; } if (H < 10) { cout<<"0"; } cout<<to_string(H)<<":"; if (M < 10) { cout<<"0"; } cout<<to_string(M); return 0; }