Codeforces Round #251 (Div. 2) A~B

A - Devu, the Singer and Churu, the Joker


1.如何判断是否impossible?

如果A不能唱完所有的歌就不能。即唱歌的时间加上中间间隔的十分钟。


2.如何计算讲笑话的次数?

如果可以唱完,中间休息的时间全部用来讲笑话,如果余下有时间,就讲,求和。


#include <cstdio>
#include <cstring>
using namespace std;
 
int main()
{
    //freopen("input.txt", "r", stdin);
    int limit, t, i, j, sum;
    while (~scanf("%d%d", &t, &limit))
    {
        sum = 0;
        for (i = 0; i < t; i++)
        {
            scanf("%d", &j);
            sum += j;
        }
        int time = (t - 1) * 10;
        sum += time;
        if (sum > limit)
        {
            printf("-1\n");
            continue;
        }
        printf("%d\n", (t - 1) * 2 + (limit - sum) / 5);
    }
    return 0;
}


B - Devu, the Dumb Guy


只要按chapter的多少排序,然后从少的开始学。。。

话说我什么时候才能做出C题TAT。。


#include <algorithm>
#include <cstdio>
using namespace std;
 
long long cha[110000];
 
int main()
{
    //freopen("input.txt", "r", stdin);
    long long hour, sub, i, j, sum;
    while (~scanf("%I64d%I64d", &sub, &hour))
    {
        sum = 0;
        for (i = 0; i < sub; i++)
            scanf("%d", &cha[i]);
        sort(cha, cha + sub);
        for (i = 0; i < sub; i++)
        {
            sum += hour * cha[i];
            if (hour > 1)
                hour--;
        }
        printf("%I64d\n", sum);
    }
 
    return 0;
}


你可能感兴趣的:(codeforces)