Phone Bills
来源:互联网 发布:网眼监控软件破解版 编辑:程序博客网 时间:2024/05/16 03:22
#include <iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<map>#include<string>#include<vector>using namespace std;const int maxn=1010;int toll[24];int n;struct record{ string name; int m; int d; int h; int min; int flag;//标记是打电话还是挂电话} c[maxn];vector<record>cus[maxn];//每个人的有效通话记录map<string,int>mp;bool cmp(record a,record b){ if(a.name!=b.name)return a.name<b.name;//先按照姓名再按照电话发生的时间进行排队 else if(a.m!=b.m)return a.m<b.m; else if(a.d!=b.d)return a.d<b.d; else if(a.h!=b.h)return a.h<b.h; else return a.min<b.min;}int cost(int d1,int h1,int min1,int d2,int h2,int min2,int &fen)//两个时间间隔和之间的话费{ int ans=0; fen=0; while(d1<d2||h1<h2||min1<min2) { ans++; min1++; fen+=toll[h1]*1; if(min1==60) { min1=0; h1++; } if(h1==24) { h1=0; d1++; } } return ans;}int main(){ // freopen("d://jin.txt","r",stdin); for(int i=0; i<24; i++) cin>>toll[i]; cin>>n; for(int i=0; i<n; i++) { string name; cin>>c[i].name; scanf("%d:%d:%d:%d",&c[i].m,&c[i].d,&c[i].h,&c[i].min); string s; cin>>s; if(s=="on-line") { on++; c[i].flag=0; } else c[i].flag=1; } sort(c,c+n,cmp); int people=1;//总共有几个有有效通话记录的人,从1开始 for(int i=0; i<n; i++) { if(c[i].name==c[i+1].name&&c[i].flag==0&&c[i+1].flag==1)//一对有效的通话记录 {if(mp[c[i].name]==0){mp[c[i].name]=people;people++;}//给名字做hash对应一个cus cus[mp[c[i].name]].push_back(c[i]); cus[mp[c[i].name]].push_back(c[i+1]); } } for(int i=1; i<people; i++) { int ans=0;int fen=0; cout<<cus[i][0].name<<' '; printf("%02d\n",cus[i][0].m); for(int j=0; j<cus[i].size()-1; j++) if(cus[i][j].flag==0&&cus[i][j+1].flag==1) { printf("%02d:%02d:%02d %02d:%02d:%02d ",cus[i][j].d,cus[i][j].h,cus[i][j].min,cus[i][j+1].d,cus[i][j+1].h,cus[i][j+1].min); cout<<cost(cus[i][j].d,cus[i][j].h,cus[i][j].min,cus[i][j+1].d,cus[i][j+1].h,cus[i][j+1].min,fen)<<' '; cout<<'$'; printf("%.2f\n",fen/100.0); ans+=fen; } cout<<"Total amount: $"; printf("%.2f\n",ans/100.0); }return 0; }
0 0
- Phone Bills
- Phone Bills
- Phone Bills
- pat1016 Phone Bills
- 1016. Phone Bills (25)
- PAT_1016: Phone Bills
- 1016 Phone Bills (25)
- PAT 1016 Phone Bills
- PAT 1016. Phone Bills
- 1016. Phone Bills
- PAT1016. Phone Bills
- PAT1016. Phone Bills
- 1016. Phone Bills (25)
- 1016. Phone Bills (25)
- 1016. Phone Bills (25)
- 1016.Phone Bills
- 1016. Phone Bills (25)
- 1016. Phone Bills (25)
- 从0到1一步步搭建代码质量检测系统~iOS
- React 入门实例教程
- 欢迎使用CSDN-markdown编辑器
- Callable与Future的介绍
- android--导航(BottomNavigationBar)
- Phone Bills
- java ssl https 连接详解 生成证书
- Linux--多线程访问全局变量互斥的例子
- IE9兼容性CSS之一transform:rotate
- spring-spring mvc-mybatis 实现主从数据库配置
- [LeetCode] 21. Merge Two Sorted Lists java
- 谷歌TensorFlow人工智能学习系统简介及基本使用入门
- Jquery 中 循环遍历 选择器 each()
- C++中的异常