其他分享
首页 > 其他分享> > 1095 Cars on Campus (30 分)

1095 Cars on Campus (30 分)

作者:互联网

这个大模拟写的爽呀
看题目戳这
不愧为30分甲级题

百行代码

精髓在于map寻找成对的数据和map累加nowcar

注意输入的询问时间一定是递增的

所以这里要省一下时间,不然会t

代码如下

#include<bits/stdc++.h>
using namespace std;
struct node{
	char id[10];
	int h,m,s,op,t;
}p[10004];
map<string,node> ma;
map<string,int> mt;
map<int,int> mi;
map<int,int> mo;
string ans[10004];
bool cmp(node x,node y){
	if(x.t!=y.t){
		return x.t<y.t;
	}else {
		return strcmp(x.id,y.id)<0;
	}
}
int change(node x){
	int res=x.h*3600+x.m*60+x.s;
	return res;
}
int nchange(int res,int &h,int &m,int &s){
	h=res/3600;
	res-=h*3600;
	m=res/60;
	res-=m*60;
	s=res;
}
int main(){
	int n,k,h,m,s,t;
	char op[5],id[10];
	scanf("%d%d",&n,&k);
	getchar();
	for(int i=0;i<n;i++){
		scanf("%s%d:%d:%d%s",p[i].id,&p[i].h,&p[i].m,&p[i].s,op);
		if(op[0]=='o'){
			p[i].op=1;
		}
		p[i].t=change(p[i]);
	}
	sort(p,p+n,cmp);
	for(int i=0;i<n;i++){
		strcpy(id,p[i].id);
		if(p[i].op==0){
			ma[id]=p[i];
		}else if(ma.find(id)!=ma.end()&&p[i].op==1){
			mt[id]+=(p[i].t-ma[id].t);
			mi[ma[id].t]++;
			mo[p[i].t]++;
			ma.erase(id);
		}
	}
	map<int,int>::iterator it1=mi.begin();
	map<int,int>::iterator it2=mo.begin();
	int nowcar=0;
	for(int i=0;i<k;i++){
		scanf("%d:%d:%d",&h,&m,&s);
		node now;
		now.h=h;
		now.m=m;
		now.s=s;
		t=change(now);
		for(it1;it1!=mi.end();it1++){
			if((it1->first)<=t){
				nowcar=nowcar+(it1->second);
			}else {
				break;
			}
		}
		for(it2;it2!=mo.end();it2++){
			if((it2->first)<=t){
				nowcar=nowcar-(it2->second);
			}else {
				break;
			}
		}
		printf("%d\n",nowcar);
	}
	int maxn=0,cnt=0;
	for(map<string,int>::iterator it=mt.begin();it!=mt.end();it++){
		if((it->second)>maxn){
			maxn=(it->second);
		}
	}
	for(map<string,int>::iterator it=mt.begin();it!=mt.end();it++){
		if((it->second)==maxn){
			ans[cnt++]=(it->first);
		}
	}
	for(int i=0;i<cnt;i++){
		printf("%s",ans[i].c_str());
		printf(" ");
	}
	nchange(maxn,h,m,s);
	printf("%02d:%02d:%02d",h,m,s);
	return 0;
}
/*
6 5
JH007BD 05:09:59 in
JH007BD 05:10:33 in
JH007BD 12:23:42 out
JH007BD 12:24:23 out
JH007BD 18:00:01 in
JH007BD 18:07:01 out
*/

标签:1095,iterator,map,int,30,mt,second,it2,Campus
来源: https://blog.csdn.net/weixin_43982216/article/details/89787018