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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bufferedReader.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
Map<Long, List<Long>> valuesToSize = new HashMap<>();
List<Long> values = new ArrayList<>();
for(int i = 0; i < n; i++){
st = new StringTokenizer(bufferedReader.readLine());
long size = Long.parseLong(st.nextToken());
long value = Long.parseLong(st.nextToken());
if(valuesToSize.containsKey(value)){
valuesToSize.get(value).add(size);
}else {
values.add(value);
List<Long> r = new ArrayList<>();
r.add(size);
valuesToSize.put(value, r);
}
}
for(int i = 0; i < values.size(); i++){
Collections.sort(valuesToSize.get(values.get(i)));
}
List<Long> frameSize = new ArrayList<>();
for(int i = 0; i < m; i++){
frameSize.add(Long.parseLong(bufferedReader.readLine()));
}
Collections.sort(values);
Collections.sort(frameSize);
int frameIndex = frameSize.size() - 1;
int count = 0;
boolean b = false;
for(int i = values.size() - 1; i >= 0; i--){
for(int j = valuesToSize.get(values.get(i)).size() - 1; j >= 0; j--){
if(frameIndex < 0){
break;
}
if(count == 0){
//if fits then put it in, or iterate until it fits
while(valuesToSize.get(values.get(i)).get(j) > frameSize.get(frameIndex)){
frameIndex--;
if(frameIndex < 0){
b = true;
break;
}
}
if(b){
break;
}
count++;
frameIndex--;
continue;
}
if(valuesToSize.get(values.get(i)).get(j) <= frameSize.get(frameIndex)){
// if it fits in the frame
count++;
frameIndex--;
}
}
if(b){
break;
}
}
System.out.println(count);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |