Skip to content

Commit e17a269

Browse files
committedJun 15, 2018
AC
1 parent 0846124 commit e17a269

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#include <cstdio>
2+
#include <algorithm>
3+
#include <cstring>
4+
using namespace std;
5+
6+
struct Node{
7+
char name[21];
8+
int month, day, hour, minute;
9+
int time;
10+
bool status;
11+
bool operator < (const Node & b) const{
12+
if(!strcmp(name, b.name)) {
13+
if (month != b.month)
14+
return month < b.month;
15+
else
16+
return time < b.time;
17+
}
18+
return strcmp(name, b.name) < 0;
19+
}
20+
} bill[1010];
21+
22+
int main(){
23+
int rate[24];
24+
for(int &i : rate)
25+
scanf("%d", &i);
26+
int cost[1441] = {0};
27+
for(int i = 1; i <= 1440; i++)
28+
cost[i] = cost[i-1] + rate[(i-1)/60];
29+
30+
int N;
31+
scanf("%d", &N);
32+
char tmp[21];
33+
for(int i = 0; i < N; i++){
34+
scanf("%s %d:%d:%d:%d %s", bill[i].name, &bill[i].month, &bill[i].day, &bill[i].hour, &bill[i].minute, tmp);
35+
bill[i].time = bill[i].day*24*60 + bill[i].hour*60 + bill[i].minute;
36+
bill[i].status = (tmp[1] == 'n') ? true : false;
37+
}
38+
sort(bill, bill+N);
39+
bool flag = true;
40+
int money = 0, total_money = 0, time = 0;
41+
for(int i = 1; i < N; i++) {
42+
if (!strcmp(bill[i].name, bill[i - 1].name)) {
43+
if (!bill[i].status && bill[i - 1].status) { //匹配成功
44+
//处理时间 钱
45+
time = bill[i].time - bill[i-1].time;
46+
if (bill[i].minute + bill[i].hour*60 > bill[i-1].minute + bill[i-1].hour*60)
47+
money = (bill[i].day - bill[i-1].day) * cost[1440] +
48+
(cost[bill[i].minute + bill[i].hour*60] -
49+
cost[bill[i-1].minute + bill[i-1].hour*60]);
50+
else
51+
money = (bill[i].day - 1 - bill[i - 1].day) * cost[1440] +
52+
(cost[1440] + cost[bill[i].minute + bill[i].hour * 60] -
53+
cost[bill[i-1].minute + bill[i-1].hour*60]);
54+
total_money += money;
55+
if (money != 0) {
56+
if (flag)
57+
printf("%s %02d\n", bill[i].name, bill[i].month);//打印名字月份
58+
flag = false;
59+
printf("%02d:%02d:%02d %02d:%02d:%02d %d $%.02lf\n", bill[i - 1].day, bill[i - 1].hour,
60+
bill[i - 1].minute, bill[i].day, bill[i].hour, bill[i].minute, time, money / 100.0);
61+
}
62+
}
63+
} else {
64+
if (total_money != 0)
65+
printf("Total amount: $%.02lf\n", total_money / 100.0);
66+
flag = true;
67+
total_money = 0;
68+
}
69+
}
70+
if(total_money != 0)
71+
printf("Total amount: $%.02lf\n", total_money / 100.0);
72+
return 0;
73+
}

0 commit comments

Comments
 (0)
Please sign in to comment.