照例的题意分析
首先输入一个数n,然后给你n行数据 每行数据都由一个名字和一个时间组成,要求按照时间的从少到多进行排序输出,如果有用时相同的情况存在就按照名字的字典序进行排序输出
然后是做法
简单的二级排序 这个题也没啥坑 交上去就是pe (´Д`) 所以又是错在格式了 (人生真的好累)个人觉得这道题可能是想要考怎么处理耗时相同的人的名次(大概,出题人不要打我)格式的重点是说要求“Output a blank line between two cases.” 正确的格式是“除了第一次的数据输入以外,之后每次输入n之后要有一个空行,然后才是n组数据”这样 (´Д`) 好吧 我承认我语文不好(趴
接下来是ac的代码
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct {
char name[100];
int hour;
int minute;
}Node;
bool cmp(Node a,Node b)
{
if (a.hour==b.hour && a.minute==b.minute)
return a.name>b.name;
else
if (a.hour==b.hour && a.minute!=b.minute)
return a.minute<b.minute;
else
return a.hour<b.hour;
}
Node node[12];
int main(){
int n;
scanf("%d",&n);
int num=1;
while(n!=0)
{
if (num!=1)
printf("\n");
int i;
int id=1;
for (i=0;i<n;i++)
scanf("%s %d:%d",node[i].name,&node[i].hour,&node[i].minute);
sort(node,node+n,cmp);
printf("Case #%d\n",num++);
// int no=1;
printf("%s %d\n",node[0].name,id);
for (i=1;i<n;i++)
{
printf("%s ",node[i].name);
if (node[i].hour!=node[i-1].hour || node[i].minute!=node[i-1].minute)
id=i+1;
printf("%d\n",id);
}
// printf("\n");
scanf("%d",&n);
}
return 0;}
接着是自我反省时间···
明明自己又不是第一次坑在格式上了·· 但是为啥总是会掉进同一个坑呢 QAQ 果然是智商不够的节奏么 总之自己多多长记性吧(趴