PAT a1016题解
来源:互联网 发布:数据库置疑脱机怎么办 编辑:程序博客网 时间:2024/05/04 22:39
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxn = 1010;int toll[25];struct Record{char name[25];int month, dd, hh, mm;bool status;}rec[maxn], temp;bool cmp(Record a, Record b){int s = strcmp(a.name, b.name);if(s != 0) return s < 0;else if(a.month != b.month) return a.month < b.month;else if(a.dd != b.dd) return a.dd < b.dd;else if(a.hh != b.hh) return a.hh < b.hh;else return a.mm < b.mm;} void get_ans(int on, int off, int& time, int& money){temp = rec[on];while(temp.dd < rec[off].dd || temp.hh < rec[off].hh || temp.mm < rec[off].mm){time++;money += toll[temp.hh];temp.mm++;if(temp.mm >= 60){temp.mm = 0;temp.hh++;}if(temp.hh >= 24){temp.hh = 0;temp.dd++;}}}int main(){for(int i = 0; i < 24; i++){scanf("%d", &toll[i]);}int n;scanf("%d", &n);char line[10];for(int i = 0; i < n; i++){scanf("%s", rec[i].name);scanf("%d:%d:%d:%d", &rec[i].month, &rec[i].dd, &rec[i].hh, &rec[i].mm);scanf("%s", line);if(strcmp(line, "on-line") == 0){rec[i].status = true;}else{rec[i].status = false;}}sort(rec, rec + n, cmp);int on = 0, off, next;while(on < n){int needPrint = 0;next = on;while(next < n && strcmp(rec[next].name, rec[on].name) == 0){if(needPrint == 0 && rec[next].status == true){needPrint = 1;}else if(needPrint == 1 && rec[next].status == false){needPrint = 2;}next++;}if(needPrint < 2){on = next;continue;}int AllMoney = 0;printf("%s %02d\n", rec[on].name, rec[on].month);while(on < next){while(on < next - 1 && !(rec[on].status == true && rec[on + 1].status == false)){on++;}off = on + 1;if(off == next){on = next;break;}printf("%02d:%02d:%02d ", rec[on].dd, rec[on].hh, rec[on].mm);printf("%02d:%02d:%02d ", rec[off].dd, rec[off].hh, rec[off].mm);int time = 0, money = 0;get_ans(on, off, time, money);AllMoney += money;printf("%d $%.2f\n", time, money / 100.0);on = off + 1; }printf("Total amount: $%.2f\n", AllMoney / 100.0);} return 0;}
阅读全文
1 0
- PAT a1016题解
- PAT A1016
- PAT-A1016
- 文字处理&排序-PAT.A1016
- PAT A1016.Phone Bills
- pat-a1016. Phone Bills (25)
- PAT A1016. Phone Bills (25)
- PAT A1016. Phone Bills (25)
- PAT甲级练习题A1016. Phone Bills (25)
- PAT 1001-1010 题解
- PAT 1011-1020 题解
- PAT 1021-1030 题解
- PAT 1031-1040 题解
- PAT 1041-1050 题解
- PAT 1051-1060 题解
- PAT(basic level)题解
- PAT乙级题解
- PAT题解目录
- DIV+CSS 让左右结构内容之间有一定距离
- 深度学习笔记——理论与推导之概念,成本函数与梯度下降算法初识(一)
- PAT a1015题解
- 使用dynamic简化反射
- hbase 源代码分析(16)协处理器 rpc endpoint 流程
- PAT a1016题解
- Java--类加载器
- UI
- - 青蛙的约会 exgcd 扩欧
- C\C++中使用_CrtDumpMemoryLeaks进行内存泄漏检测
- PAT a1019题解
- 字符设备驱动
- 接收double类型变量输入
- 线程安全与线程不安全