1016. Phone Bills (25)
#include <iostream>
#include <map>
#include <string>
#include <string.h>
#include <vector>
#include <algorithm>using namespace std;struct node
{int flag, hour, minute, day, time;
};int cmp(node n1, node n2)
{return n1.time < n2.time;
}int main()
{double p[24], dayp = 0;int i;for(i = 0; i <= 23; i++){scanf("%lf", &p[i]);dayp += p[i] * 60;}int n;scanf("%d", &n);char name[30], flag[10];map<string, vector<node>> m;int month;node nod;for(i = 1; i <= n; i++){getchar();scanf("%s%d:%d:%d:%d%s", name, &month, &nod.day, &nod.hour, &nod.minute, flag);if(flag[1] == 'n'){nod.flag = 1;}else{nod.flag = 0;}nod.time = nod.day * 24 * 3600 + nod.hour * 60 + nod.minute;m[name].push_back(nod);}map<string, vector<node>> ::iterator it;vector<node> v;int size, first, minutes, j;double sum, cur;node n1, n2;for(it = m.begin(); it != m.end(); it++){v = it->second;sort(v.begin(), v.end(), cmp);size = v.size();sum = 0;first = 1;for(i = 0; i < size; i++){if(v[i].flag == 1 && i + 1 < size && v[i + 1].flag == 0){if(first == 1){first = 0;printf("%s %02d\n", (it->first).c_str(), month);}cur = minutes = 0;n1 = v[i];n2 = v[i + 1];if(n1.day != n2.day){minutes += 60 - n1.minute;cur += (60 - n1.minute) * p[n1.hour];for(j = n1.hour + 1; j <= 23; j++){minutes += 60;cur += 60 * p[j];}for(j = n1.day + 1; j <= n2.day - 1; j++){minutes += 24 * 60;cur += dayp;}for(j = 0; j <= n2.hour - 1; j++){minutes += 60;cur += 60 * p[j];}minutes += n2.minute;cur += n2.minute * p[n2.hour];}else if(n1.hour != n2.hour){minutes += 60 - n1.minute;cur += (60 - n1.minute) * p[n1.hour];for(j = n1.hour + 1; j <= n2.hour - 1; j++){minutes += 60;cur += 60 * p[j];}minutes += n2.minute;cur += n2.minute * p[n2.hour];}else{minutes += n2.minute - n1.minute;cur += (n2.minute - n1.minute) * p[n1.hour];}cur /= 100;sum += cur;printf("%02d:%02d:%02d %02d:%02d:%02d %d $%.2lf\n", n1.day, n1.hour, n1.minute, n2.day, n2.hour, n2.minute, minutes, cur);}}if(first == 0){printf("Total amount: $%.2lf\n", sum);}}system("pause");return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974037.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!