ZOJ 3787

来源:互联网 发布:graphic 软件 编辑:程序博客网 时间:2024/05/22 06:12

考察排序的模拟题

#include<cstdio>#include<cstdlib>struct one_student{    int num;    int h;    int m;    int s;};int cmp(const void *a,const void *b){    if((*(one_student *)a).h!=(*(one_student *)b).h) return (*(one_student *)a).h-(*(one_student *)b).h;    else if((*(one_student *)a).m!=(*(one_student *)b).m) return (*(one_student *)a).m-(*(one_student *)b).m;    else return (*(one_student *)a).s-(*(one_student *)b).s;}int cmp1(const void *a,const void *b){    return *(int *)a-*(int *)b;}bool compare(one_student a,one_student b,int l){    long long sum_a=a.h*3600+a.m*60+a.s;    long long sum_b=b.h*3600+b.m*60+b.s;    if(sum_b-sum_a>=l) return false;    else return true;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n,l;        scanf("%d%d",&n,&l);        one_student student[n];        for(int i=0;i<n;i++)        {            student[i].num=i+1;            scanf("%d:%d:%d",&student[i].h,&student[i].m,&student[i].s);        }        qsort(student,n,sizeof(student[0]),cmp);        int ans[n],k=0;        ans[k++]=student[0].num;        one_student temp=student[0];        for(int i=1;i<n;i++)        {            if(compare(temp,student[i],l)==0)            {                ans[k++]=student[i].num;                temp=student[i];            }        }        qsort(ans,k,sizeof(ans[0]),cmp1);        printf("%d\n",k);        for(int i=0;i<k;i++)        {            printf("%d",ans[i]);            if(i!=k-1) printf(" ");        }        printf("\n");    }    return 0;}


0 0
原创粉丝点击