气死我了,java的优先队列一直显示编译错误,我改了一下午,最后万念俱灰,随便加了个容量值没想到就AC了,随便说一句,java版本居然只到1.5,让我如何enjoy
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.Arrays;
public class POJ_3614 {
static int c,l;
static class cow{
int min,max;
public cow(int min) {
this.min = min;
}
}
static class bott{
int spf,count;
public bott(int spf) {
this.spf = spf;
}
}
static cow cs[]=new cow[3000];
static bott bs[]=new bott[3000];
static int ans,INF=9999999;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
c=sc.nextInt();
l=sc.nextInt();
for (int i = 0; i < cs.length; i++) {
cs[i]=new cow(INF);
bs[i]=new bott(INF);
}
for (int i = 0; i < c; i++) {
cs[i].min=sc.nextInt();
cs[i].max=sc.nextInt();
}
for (int i = 0; i < l; i++) {
bs[i].spf=sc.nextInt();
bs[i].count=sc.nextInt();
}
Comparator<cow> cmp=new Comparator<cow>() {
@Override
public int compare(cow o1, cow o2) {
return o1.max-o2.max;
}
};
Comparator<cow> cmp2=new Comparator<cow>() {
@Override
public int compare(cow o1, cow o2) {
return o1.min-o2.min;
}
};
Comparator<bott> cmp1=new Comparator<bott>() {
@Override
public int compare(bott o1, bott o2) {
return o1.spf-o2.spf;
}
};
Arrays.sort(cs,cmp2);
Arrays.sort(bs,cmp1);
PriorityQueue<cow> queue=new PriorityQueue<cow>(3000,cmp);
int j=0;
for (int i = 0; i < l; i++) {
while (j<c&&cs[j].min<=bs[i].spf){
queue.offer(cs[j]);
j++;
}
while(!queue.isEmpty()&&bs[i].count>0){
cow e=queue.peek();
queue.poll();
if(e.max>=bs[i].spf){
ans++;
bs[i].count--;
}
}
}
System.out.println(ans);
}
}