#include
#include
#include
#include
for(int i = 0; i < n-1;i++){//最长停留时间。存map时间数据对应
if(!strcmp(all[i].id,all[i+1].id) && !strcmp(all[i+1].status,"out") && !strcmp(all[i].status,"in")){
valid[num++] = all[i];
valid[num++] = all[i+1];
int Intime = all[i+1].time - all[i].time;
if(parkTime.count(all[i].id)==0){
parkTime[all[i].id] = 0;
}
parkTime[all[i].id] += Intime;
maxTime = max(parkTime[all[i].id],maxTime);
}
}
sort(valid,valid+num,cmpByTime);
int now = 0, numCar = 0;
//now指向不超过当前查询时间的记录,numCar记录当前由多少辆车
for(int i = 0; i < k ; i++){
scanf("%d:%d:%d",&hh,&mm,&ss);
int time = timeToInt(hh,mm,ss);
//下标与时间两个比较
while(now < num && valid[now].time <= time){
if(!strcmp(valid[now].status,"in")) numCar++;
else numCar--;
now++;
}
printf("%d\n",numCar);
}
//map套路 ----遍历所有车牌号,输出所有最长总停留时间的车牌号
map<string,int>::iterator it;//it变量
for(it = parkTime.begin();it != parkTime.end();it++){
if(it->second == maxTime){
printf("%s ",it->first.c_str());
}
}
//输出总停留时间
printf("%02d:%02d:%02d\n",maxTime/3600,maxTime%3600/60,maxTime%60);
return 0;
}
总结:
map套路 ----遍历所有车牌号,输出所有最长总停留时间的车牌号
2.while(now < num && valid[now].time <= time){
if(!strcmp(valid[now].status,“in”)) numCar++;
else numCar–;
now++;
}
printf("%d\n",numCar);
//下标与时间两个比较