禁止登录

描述

为了提升用户帐号的安全性,H站决定实施一项措施:对在1小时内(注:00:00:00与01:00:00仍视为在1小时内)出现5次或5次以上密码错误的账户,暂时禁止该帐号被登录。  

现在小Hi拿到了某日全部密码错误的日志,他想知道有哪些帐号被暂时禁止登录。

输入

第一行包含一个整数N,代表记录的行数。  

以下N行每行包含一个整数A和一个时间T。其中是A代表密码错误的账号ID;T代表发生时间,格式是"hh:mm:ss"。  

1 ≤ N ≤ 10000  1 ≤ A ≤ 100000  00:00:00 ≤ T ≤ 23:59:59

输出

从小到大输出所有被禁止登录的帐号ID,每个一行。

样例输入

10  

1000 00:00:00  

1001 00:59:00

1001 00:58:00

1001 01:00:00

1000 01:00:00  

1000 02:00:00  

1000 03:00:00  

1001 01:00:01

1000 04:00:00   

1001 01:23:14

样例输出

1001

 

 

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Scanner;

 

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int N = in.nextInt();

        HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();

        for (int i = 0; i < N; i++) {

            int id = in.nextInt();

            String time = in.next();

            int s = helper(time);

            if (map.keySet().contains(id)) {

                map.get(id).add(s);

            } else {

                ArrayList<Integer> list = new ArrayList<>();

                list.add(s);

                map.put(id, list);

            }

        }

        ArrayList<Integer> ids = new ArrayList<>();

 

        for (int id : map.keySet()

                ) {

            if (map.get(id).size() >= 5) {

                ArrayList<Integer> list = map.get(id);

                list.sort((o1, o2) -> (o1 - o2));

                for (int i = 0; i <= list.size() - 5; i++) {

                    if (list.get(i+4)-list.get(i) <=3600) {

                        ids.add(id);

                        break;

                    }

                }

            }

        }

        ids.sort((o1, o2) -> (o1 - o2));

        for (int id:ids

             ) {

            System.out.println(id);

        }

 

    }

 

    private static int helper(String time) {

        String[] ts = time.split(":");

        return Integer.valueOf(ts[2]) + 60 * Integer.valueOf(ts[1]) + 60 * 60 * Integer.valueOf(ts[0]);

    }

}

 

猜你喜欢

转载自blog.csdn.net/weixin_38970751/article/details/83272786