日志统计

小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是:

ts id

表示在ts时刻编号id的帖子收到一个"赞"。

现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。

具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是"热帖"。

给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。

【输入格式】
第一行包含三个整数N、D和K。
以下N行每行一条日志,包含两个整数ts和id。

对于50%的数据,1 <= K <= N <= 1000


对于100%的数据,1 <= K <= N <= 100000 0 <= ts <= 100000 0 <= id <= 100000

【输出格式】
按从小到大的顺序输出热帖id。每个id一行。

【输入样例】
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3

【输出样例】
1
3

import java.util.Scanner;
public class h {

    /**
     * @dzl
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner s=new Scanner(System.in);
          int a=s.nextInt();
          int b=s.nextInt();
          int c=s.nextInt();
          int d[]=new int[a];//时间
          int e[]=new int[a];//第几个帖子
          for (int i = 0; i < a; i++) {
            d[i]=s.nextInt();//输入时间
            e[i]=s.nextInt();//输入帖子
        }
          int sum=0;
      for (int i = 0; i <e.length; i++) {
        aa:for (int j = i+1; j < e.length; j++) {
            if(e[i]==e[j]){//如果帖子相等
                if(d[i]>d[j]&&d[j]+b>d[i]){//找最小的时间是否在时间内
                    sum++;
                }else if(d[i]<=d[j]&&d[i]+b>d[j]){
                    sum++;
                }
            }else{//如果不满足,跳过这次循环
                continue aa;
            }
            if(sum>=c){
                System.out.println(e[i]);
            }
        }
    }
    }

}

 

posted @ 2020-03-02 16:42  智阿广  阅读(185)  评论(0)    收藏  举报