uva 12108

来源:互联网 发布:网络映射在哪里 编辑:程序博客网 时间:2024/04/28 01:37

题目 :https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3260

每个学生单独计时,当时间等于周期时或者学生想睡觉时发现睡觉觉的学生不多于醒着的学生时重新计时。直到所有的学生都醒。

#include <stdio.h>#define N 20struct student{    int awake,sleep,start,flag=0;} cmd[N];int main (){    int a;    int time = 0;    while(scanf("%d",&a)!=EOF)    {        if(!a)        {            return 0;        }        int slp=0,swk=0;        for(int i=0; i<a; i++)        {            scanf("%d%d%d",&cmd[i].awake,&cmd[i].sleep,&cmd[i].start);            if(cmd[i].awake>=cmd[i].start)            {                swk++;            }        }        int sum=0;        int i;        for( i=0; i<10000; i++)        {            swk=0;            for(int i=0; i<a; i++)            {                if(cmd[i].awake>=cmd[i].start)                {                    swk++;                }            }            if(swk==a)            {                break;            }            for(int j=0; j<a; j++)            {                if(cmd[j].awake+cmd[j].sleep==cmd[j].start||(cmd[j].awake==cmd[j].start&&swk>=a-swk))                {                    cmd[j].start=0;                }                cmd[j].start++;            }        }        int t;        if(i==10000) printf("Case %d: -1\n",++time);        else printf("Case %d: %d\n",++time,i+1);    }    return 0;}


0 0
原创粉丝点击