Super easy. HashSet would have provided better performance than an ArrayList though.
import java.io.PrintWriter; import java.util.ArrayList; import java.util.Scanner; /** * * @author Sanchit M. Bhatnagar * @see http://uhunt.felix-halim.net/id/74004 * */ public class P10919 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); while (sc.hasNextInt()) { int K = sc.nextInt(); if (K == 0) break; int M = sc.nextInt(); ArrayList<String> courses = new ArrayList<>(); for (int i = 0; i < K; i++) { courses.add(sc.next()); } boolean good = true; for (int i = 0; i < M; i++) { int num = sc.nextInt(); int min = sc.nextInt(); int count = 0; for (int j = 0; j < num; j++) { String course = sc.next(); if (courses.contains(course)) count++; } if (count < min) good = false; } if (good) { out.println("yes"); } else { out.println("no"); } } out.close(); sc.close(); } }