Submission #1263220

#TimeUsernameProblemLanguageResultExecution timeMemory
1263220octopops5Exhibition (JOI19_ho_t2)Java
100 / 100
506 ms70120 KiB
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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...