同时在线人数问题

  • 现有一份网络日志,里面记录着若干用户大约60年间的上网上线时间和下线时间。时间以秒为单位顺序计时。假设网络管理规定到了每天零时,如果还有在线用户,则进行一次强制下线处理。也就是说,用户的上线下线时间不会跨越两个日期。请编程统计网络日志中同时(1秒内)在线的最大人数。
  • 输入格式

    共n+1行。
    第1行包含一个整数n(1 ≤ n ≤ 1,000),表示一共有n条日志记录。
    接下来的n行,每行有2个数字A和B,表示一条日志记录,这条日志表明该用户[A,B)时间内在线。
    其中A和B单位是秒,并且都是从00:00开始计数的,例如[10,100)表示该用户在10秒到100秒这
    段时间内在线(含10秒,不含100秒)(0 ≤ A < B < 60 * 60 * 24 * 30 * 12 * 60, 大约60年内)。
    
    
  • 输出格式

    #include<stdio.h>
    int count(long log_t[][2], const int size, int t)
    {
        int sum = 0;
        for(int i = 0; i < size; i++)
        {
            if ((log_t[i][0] <= t) && (t < log_t[i][1]))
                sum +=1;
        }
         
        return sum;
    }
     
    int main()
    {
        long a[1000][2]={{0,0}};
        int n;
        scanf("%d", &n);
     
        for (int i = 0; i < n; i++)
        {
            scanf("%ld%ld", &a[i][0], &a[i][1]);
        }
         
        int maxOnline = 0; //
        for (int i = 0; i < n; i++)
        {
            int c1 = count(a, n, a[i][0]);
            int c2 = count(a, n, a[i][1]);
            maxOnline = (maxOnline > c1) ? maxOnline : c1;
            maxOnline = (maxOnline > c2) ? maxOnline : c2;
        }
         
        printf("%d\n", maxOnline);
        return 0;
    }
    共1行,包含一个整数,表示同时在线的最大人数。
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值