SEARCH - Dãy số

Tags: counting, implementation

Problem

https://vn.spoj.com/problems/SEARCH

https://oj.vnoi.info/problem/SEARCH

Cho ba dãy số nguyên dương A=(A1,..,AM), B=(B1,...,BN)C=(C1,...,CP)

Hãy tìm một dãy con dài nhất gồm các phần tử liên tiếp của dãy C thỏa mãn hai điều kiện:

  • Mọi phần tử của dãy A đều xuất hiện trong dãy con được chọn
  • Không phần tử nào của dãy B xuất hiện trong dãy con được chọn

Input

  • Dòng 1 chứa ba số nguyên dương M, N, P
  • Dòng 2 chứa M số nguyên dương A1,...,AM
  • Dòng 3 chứa N số nguyên dương B1,...,BN
  • Dòng 4 chứa P số nguyên dương P1,...,PN

Các số trong file dữ liệu đều là số nguyên dương không lớn hơn 10^5, các số trên cùng một dòng được ghi cách nhau bởi dấu cách. Dữ liệu vào đảm bảo tìm được dãy con khác rỗng gồm các phần tử liên tiếp thỏa mãn yêu cầu đề bài. Trong 50% số test, m,n,p <= 1000

Output

Một số nguyên duy nhất là độ dài của dãy con tìm được

Example

Input
3 2 11
1 2 3
5 9
1 2 9 2 2 1 4 5 3 1 2 

Output
3

Tutorial

Trước tiên tạo mảng x[k] đánh dấu các phần tử nào cần xuất hiện và k đc có trong mảng sau cùng tìm được (tạo từ 2 mảng A, B).

Phần còn lại là duyệt trên mảng C, đếm các phần tử cho đến khi đủ số lượng các phần tử cần xuất hiện trong A.


Submission

SEARCH.cpp