import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class joi2019_ho_t2 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
List<Picture> pictures = new ArrayList<>();
List<Integer> frames = new ArrayList<>();
for(int i = 0; i < n; i++){
st = new StringTokenizer(br.readLine());
int size = Integer.parseInt(st.nextToken());
int value = Integer.parseInt(st.nextToken());
pictures.add(new Picture(size, value));
}
for(int i = 0; i < m; i++){
frames.add(Integer.parseInt(br.readLine()));
}
pictures.sort(new PictureComparator());
Collections.sort(frames);
int first_sum = 0;
int current_frame = 0;
int current_picture = 0;
while(current_frame < m && current_picture < n){
if(frames.get(current_frame) >= pictures.get(current_picture).size){
first_sum += 1;
current_frame += 1;
current_picture += 1;
}else{
current_frame += 1;
}
}
current_frame = 0;
current_picture = 0;
int second_sum = 0;
while(current_frame < m && current_picture < n){
if(frames.get(current_frame) >= pictures.get(current_picture).size){
second_sum += 1;
current_frame += 1;
current_picture += 1;
}else{
current_picture += 1;
}
}
System.out.println(Math.max(first_sum, second_sum));
}
}
class Picture{
int value;
int size;
public Picture (int s, int v){
this.size = s;
this.value = v;
}
}
class PictureComparator implements Comparator<Picture> {
public int compare(Picture pic1, Picture pic2) {
if(pic1.value == pic2.value){
return pic1.size - pic2.size;
}else{
return pic1.value - pic2.value;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |