아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Совпадения случайны

시간 제한2초메모리 제한1024 MB

요약
n명의 참가자와 m개의 대회 결과가 주어질 때, IP, 최종 레이팅, 점수 수준에 관한 네 조건을 만족하는 다른 참가자 B가 존재하는 참가자 A를 모두 찾는다.
난이도

보통10점 중 7점

유형
시뮬레이션, 구현, 정렬, 완전 탐색
정답자
아직 제출이 없습니다

문제

Теперь в Берляндии новый национальный спорт --- спортивное программирование! Для его популяризации и организации была создана Организация, целью которой стало проведение онлайн-соревнований. Однако получилось так, что сначала Организация провела регистрацию nn участников, присвоила каждому некоторый рейтинг и провела mm соревнований, а только потом приняла регламент проведения соревнований и правила участия в них.

Самым главным новшеством стало введение запрета использования нескольких различных аккаунтов одним человеком, и сейчас Организация пытается определить всех потенциальных нарушителей. Как показал многолетний опыт, участник AA может быть нарушителем только в том случае, если есть участник BB такой, что выполнены все следующие условия:

  1. AA и BB никогда не участвовали в одном соревновании
  2. рейтинг BB после последнего соревнования меньше, чем рейтинг AA
  3. AA и BB писали соревнования с одного IP-адреса
  4. BB выступал на уровне AA во всех соревнованиях, в которых принимал участие. Считается, что участник BB выступил на уровне участника AA в некотором соревновании, если для любого i<ki < k highest(i)≤points(b)highest(i) \le points(b) и highest(k)>points(b)highest(k) > points(b), где points(B)points(B) --- результат участника BB в этом соревновании, kk --- конечный рейтинг участника AA, highest(i)highest(i) --- маскимальное число баллов, набранное в текущем соревновании участником, чей конечный рейтинг равен ii. При этом считается, что участник, набравший в соревновании масимальное число баллов, выступил в нем на уровне участника с рейтингом десять. Если участник не участвовал ни в одном соревновании, его уровень считается равным нулю.

Вам как ведущему аналитику Организации было поручено по результатам соревнований определить всех участников, которые могут быть нарушителями.

입력

В первой строке входного файла записано два целых числа: nn и mm (1≤n,m≤2001 \le n,m \le 200) --- количество зарегистрированных участников и количество соревнований. В следующих nn строках записаны данные учасников --- в ii-й строке записан логин s_is\_i и текущий рейтинг r_ir\_i (0≤r_i≤100 \le r\_i \le 10) участника с номером ii, записанные через пробел. Логин участника может содержать только латинские буквы и может быть не длиннее 20 символов.

Далее находится mm блоков, описывающих результаты соревнований. В первой строке кажого блока записано одно целое число kk (1≤k≤n1 \le k \le n) --- количество участников, принимавших участие в этом соревновании. В следующих kk строках записаны результаты каждого участника в следующем формате: логин участника s_js\_j, целое число, показывающее количество набранных им в этом соревновании баллов, b_jb\_j (0≤b_j≤20000 \le b\_j \le 2000), целое число, описавающее изменение его рейтинга, d_jd\_j (−10≤d_j≤10-10 \le d\_j \le 10) и IP-адрес, с которого этот участник писал контест, разделенные пробелами. При этом рейтинг участника не может опускаться ниже нуля и подниматься выше десяти. IP-адреса участников в течение серии соревнований не менялись. Каждый IP-адрес содержит только точки и цифры.

출력

В первой строке выходного файла выведите число ll подозрительных участников. В следующих ll строках выведите их логины в лексикографическом порядке.

예제2

  1. 예제 1

    입력
    3 2
    Petya 1
    Vasya 2
    Gena 3
    2
    Vasya 2 -2 10.0.0.1
    Petya 10 2 10.0.0.2
    2
    Gena 100 0 10.0.0.1
    Petya 10 0 10.0.0.2
    
    예상 출력
    1
    Gena
    
  2. 예제 2

    입력
    2 2
    Petya 10
    Gena 3
    1
    Gena 1000 0 10.0.0.1
    1
    Petya 1000 0 10.0.0.1
    
    예상 출력
    1
    Petya