求助,第二个案例过不了,代码如下
ACwing上面都过了,这里过不了啊
import java.io.*;
import java.util.*;
public class Main {
static PrintWriter out = new PrintWriter(System.out);
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static String next()throws Exception{
while (st==null||!st.hasMoreTokens())
st = new StringTokenizer(br.readLine());
return st.nextToken();
}
static String nextLine()throws Exception{
while (st==null||!st.hasMoreTokens())
st = new StringTokenizer(br.readLine(),"\n");
return st.nextToken();
}
static int nextInt()throws Exception{
return Integer.parseInt(next());
}
static PriorityQueue<Integer> maxHeap,minHeap;
public static void main(String[] args) throws Exception {
int p = nextInt();
String[] ar;
String s;
for(int i=0;i<p;i++) {
minHeap = new PriorityQueue<>();
maxHeap = new PriorityQueue<>((x,y)->{return y-x;});
LinkedList<Integer> result = new LinkedList<>();
int a = nextInt();
int d=0;//个数
int b = nextInt();
int g = b;
for(;b>0;b-=10) {
s = nextLine();
ar = s.split(" ");
for(String str : ar) {
d++;
int mid = (d+1)/2;
int x = Integer.parseInt(str);
//插入
if(minHeap.isEmpty() || x >= minHeap.peek()) minHeap.offer(x);
else maxHeap.offer(x);
//调整
while(minHeap.size()>mid) maxHeap.offer(minHeap.poll());
while(minHeap.size()<mid) minHeap.offer(maxHeap.poll());
if(d%2==1) {
result.add(minHeap.peek());
}
}
}
out.println(a+" "+result.size());
for(int j=result.size();j>=10;j-=10) {
for(int k=0;k<10;k++) {
if(k!=9)out.print(result.poll()+" ");
else out.print(result.poll());
}
out.println();
}
if(result.size()!=0) {
for(int re:result) {
out.print(re+" ");
}
out.println();
}
}
out.close();
}
}

