#include<stdio.h>
struct peo
{int a;
char jin[5];
char chu[5];
int gong;
};
int main()
{int n=0,i=0,h=0,v=0;
struct peo per[101];
struct peo ans[101];
scanf("%d",&n);
while(i<n){
scanf("%d %s %s",&per[i].a,&per[i].jin,&per[i].chu);
i++;
}
i=0;
while(i<n)
{per[i].gong=(per[i].chu[0]-'0')*600+(per[i].chu[1]-'0')*60+(per[i].chu[3]-'0')*10+(per[i].chu[4]-'0')
-((per[i].jin[0]-'0')*600+(per[i].jin[1]-'0')*60+(per[i].jin[3]-'0')*10+(per[i].jin[4]-'0'));
i++;
}//以00:00为统一基准计算时间
for(int a=0;a<n;a++){
for(int b=(a+1);b<n;b++){
if(per[a].a==per[b].a){
per[a].gong+=per[b].gong;
per[b].a=0;}
}
if(per[a].a!=0){ans[h].a=per[a].a;ans[h].gong=per[a].gong;
h++;}
}//对相同序号的员工进行工作时间求和
for(int a=1;a<h;a++){
for(int b=0;b<h-a;b++){i=0;
if(ans[b].gong<ans[b+1].gong){i=ans[b].gong,ans[b].gong=ans[b+1].gong,ans[b+1].gong=i;
i=ans[b].a,ans[b].a=ans[b+1].a,ans[b+1].a=i;
}
}
}//第一步进行工作时间排序
for(int a=1;a<h;a++){
for(int b=0;b<h-a;b++){if(ans[b].gong==ans[b+1].gong&&ans[b].a>ans[b+1].a){i=ans[b].gong,ans[b].gong=ans[b+1].gong,ans[b+1].gong=i;
i=ans[b].a,ans[b].a=ans[b+1].a,ans[b+1].a=i;
}
}
}//第二步进行序号排序
while(v<h){
printf("%d %d\n",ans[v].a,ans[v].gong);
v++;
}
return 0;
}
XDOJ 期末练习题选做 考勤系统
最新推荐文章于 2024-07-08 22:12:26 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)