1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main () {

	unsigned long long n,m,l,h,a,ii,b,licznik,min=0;
	bool doroslosc=true;
	vector<pair<int,int> >kappa;
	
	cin >> n >> m;
	
	unsigned long long tab[100*n],tab_minuta[100*n],tablica[100*n];
	
	licznik=0;
	
	for(int i=0;i<n;i++){
		
		cin >> l;
		
		for(int j=0;j<l;j++){
			
			cin >> tab[licznik];

			tab_minuta[licznik]=i+2;
			
    		kappa.push_back(make_pair(tab[licznik],i+2));
						
			licznik++;		
			
		}
		
	}
	
	std::vector<int> v(tab,tab+8);

 	std::sort (v.begin(), v.end()); 

	for(int i=0;i<m;i++){
		
		cin >> a;
		
		std::vector<int>::iterator low,up;
		low=std::lower_bound (v.begin(), v.end(), a); 
  		up= std::upper_bound (v.begin(), v.end(), a);
		
		tablica[i] = (low- v.begin()) - 1;
	
		if(low- v.begin() > licznik){
			
			doroslosc=false;
			break;
			
		}
		
	}
	
	if(!doroslosc){
	
		cout << "-1" << endl;	
		
	}
	else{
		
		sort (kappa.begin(),kappa.end());
		
		for(int i=0;i<m;i++){

			if(min<kappa[tablica[i]].second)	min = kappa[tablica[i]].second;
			
		} 	
		
		cout << min << endl;	
		
	}
	
	return 0;
}