题目

源地址:

http://poj.org/problem?id=1083

理解

题目不难,关键在于理解题意。开一个数组,求出每一张桌子移动的时间,遍历找出最大值即可。

代码

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    int n, tables, corridor[200], i, j, start, end, time, x, y;
    scanf("%d", &n);
    while (n-- > 0)
    {
        memset(corridor, 0, sizeof(corridor));
        time = 0;
        scanf("%d", &tables);
        for (i = 0; i < tables; i++)
        {
            scanf("%d%d", &x, &y);
            start = ((x < y ? x : y) - 1) / 2;
            end = ((x > y ? x : y) - 1) / 2;
            for (j = start; j <= end; j++)
                corridor[j] += 10;
        }
        for (i = 0; i < 200; i++)
            time = corridor[i] > time ? corridor[i] : time;
        printf("%d\n", time);
    }
    return 0;
}

更新日志

  • 2014年07月22日 已AC。