uva12108

来源:互联网 发布:专业网络公关 编辑:程序博客网 时间:2024/06/13 13:09
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;


const int N = 10;


struct Stu {
    int a, b, c;


    bool is_sleep()
    {
        return c > a;
    }


    int next_minute(int m, bool can_sleep)
    {
        if (++c > a+b) {c = 1; m--;}
        else if (c == a+1) {
            if (can_sleep) m++;
            else c = 1;
        }
        return m;
    }
};


int main()
{
    int n, m, t;
    Stu s[N];
    int kase = 0;


    while (scanf("%d", &n) && n) {
        m = 0;
        for (int i = 0; i < n; i++) {
            scanf("%d%d%d", &s[i].a, &s[i].b, &s[i].c);
            if (s[i].is_sleep()) m++;
        }


        for (t = 1; t <= 500; t++) {
            if (m == 0) break;
            bool can_sleep = (m > n-m) ? 1 : 0;
            for (int i = 0; i < n; i++)
                m = s[i].next_minute(m, can_sleep);
        }


        if (m == 0) printf("Case %d: %d\n", ++kase, t);
        else printf("Case %d: -1\n", ++kase);
    }


    return 0;
}
原创粉丝点击