Uva-12108 - Extraordinarily Tired Students-AC

来源:互联网 发布:男士真皮手套品牌 知乎 编辑:程序博客网 时间:2024/06/05 20:54

不要多想找规律,直接暴力模拟5000分钟,中间有都不睡的就返回,模拟完了还没有合适的直接返回-1.

AC代码:

#include <stdio.h>#include <stdlib.h>struct stu{    int awa,sle,ing;};int judge(struct stu peo[],int slepnum,int n,int t){    if (t==5001) return -1;    int i;    for (i=0;i<n;i++)//更新下一分钟每位同学应该处于的状态    {        if (peo[i].ing==peo[i].awa&&slepnum<n/2+1)            peo[i].ing=1;        else            peo[i].ing++;        if (peo[i].ing > peo[i].awa+peo[i].sle)            peo[i].ing=1;    }    slepnum=0;    for (i=0;i<n;i++)//更新当前睡觉的人数        if (peo[i].ing>peo[i].awa)            slepnum++;    if (!slepnum) return t;    judge(peo,slepnum,n,++t);}int main(){    struct stu peo[15];    int i,n,t=0;    while(scanf("%d",&n)&&n)    {        int slepnum=0;      //当前睡觉的人数        for (i=0;i<n;i++)        {            scanf("%d%d%d",&peo[i].awa,&peo[i].sle,&peo[i].ing);            if (peo[i].ing>peo[i].awa)                slepnum++;        }        if (slepnum) printf("Case %d: %d\n",++t,judge(peo,slepnum,n,2));        else printf("Case %d: 1\n",++t);    }    return 0;}


0 0
原创粉丝点击