思路:结构体存储用户name,话费记录,其中话费记录采用pair
1.首先找到第一条on-line,然后从该条on-line向后推远至连续的on-line的最后一个on-line,那么下一条就是off-line(如果有),这on-line和off-line就是配对的两条,计算费用即可。
2.数值计算采用零点到当前的累计和作差。
- #include
- #include
- #include
- #include
- #include
- #define MAXN 1010
- using namespace std;
- int price[25];
- struct Peo{
- string name;
- vector
> record; - };
- struct Peo p[MAXN];
- map
int> name_id; - bool cmp(Peo a,Peo b){
- return a.name
- }
- bool cmp2(pair
a,pair b) { - return a.first
- }
- double sumFromZero(string t){
- int day=stoi(t.substr(3,2)),hour=stoi(t.substr(6,2)),minute=stoi(t.substr(9,2));
- double sum=day*price[24]*60;
- for(int i=0;i
60; - sum+=price[hour]*minute;
- return sum/100;
- }
- int getMinute(string t){
- int day=stoi(t.substr(3,2)),hour=stoi(t.substr(6,2)),minute=stoi(t.substr(9,2));
- return day*24*60+hour*60+minute;
- }
- int main(){
- for(int i=0;i<24;i++){
- cin>>price[i];
- price[24]+=price[i];
- }
- int n;
- cin>>n;
- int idx=0;
- for(int i=0;i
- string name,t,kind;
- int a;
- cin>>name>>t>>kind;
- if(name_id.count(name)>0){
- a=name_id[name];
- }
- else{
- name_id[name]=idx++;
- a=idx-1;
- }
- p[a].name=name;
- p[a].record.push_back(make_pair(t,kind));
- }
- //处理
- sort(p,p+idx,cmp);
- for(int i=0;i
- //对具体的每个用户处理
- sort(p[i].record.begin(),p[i].record.end(),cmp2);
- int flag=1,size=p[i].record.size();//flag记录是否输出了一个
- double sum=0;
- for(int j=0;j
- int on_i=-1;
- while(j
"on-line") j++; - if(j==size)break;
- while(j
"on-line") j++; - on_i=j-1;//j-1 on-line;j off-line
- if(j==size)break;
- double temp=0;string on=p[i].record[j-1].first,off=p[i].record[j].first;
- temp=sumFromZero(off)-sumFromZero(on);
- sum+=temp;
- if(flag){
- flag=0;
- cout<
" "<
0].first.substr(0,2)<
- }
- cout<
-1].first.substr(3,8)<<" "<
substr(3,8)<<" ";
- int minute=getMinute(off)-getMinute(on);
- cout<
" ";printf("$%.2lf\n",temp); - }
- if(!flag) printf("Total amount: $%.2lf\n",sum);
- }
- return 0;
- }
-
相关阅读:
2.17 haas506 2.0开发教程-system(仅支持2.2以上版本)
直击第一届中国测绘地理信息大会,华测导航强势出圈!
python入门篇08- 函数进阶-参数传递
【数据库】分组数据 GROUP BY、HAVING
php长字符串大文本如何处理 —— <<<定界符的使用
Node.js 零基础入门 Node.js 零基础入门第三天 3.3 Express 中间件
Android studio中有报错,如何解决?
java架构知识-数据库(学习笔记)
【TestNG学习(三)套件测试】
题解 Codeforces Round #811 (Div. 3)
-
原文地址:https://blog.csdn.net/weixin_52030057/article/details/132907307