这里是代码:
import java.util.*;
public class Main {
static Node[] a=new Node[220000],win=new Node[110000],lose=new Node[110000];
static int n,r,q,winCnt,lsCnt;
static boolean cmp(Node x,Node y){
return x.getScore()>y.getScore()||(x.getScore()==y.getScore()&&x.getId()<y.getId());
}
static void merge(){
int ii=1,jj=1;
int k=0;
while(ii<=winCnt&&jj<=lsCnt){
if(cmp(win[ii],lose[jj])){
k++;
a[k]=win[ii];
ii++;
}else{
k++;
a[k]=lose[jj];
jj++;
}
}
if(ii<=winCnt){
for(int x=ii;x<=winCnt;x++){
k++;
a[k]=win[x];
}
}
if(jj<=lsCnt){
for(int x=jj;x<=lsCnt;x++){
k++;
a[k]=lose[x];
}
}
}
static void quickSort(int l,int r){
Random rand=new Random();
int t=rand.nextInt(l,r);
Node tp=a[l];a[l]=a[t];a[t]=tp;
int i=l,j=r,k=l+1;
while(k<=j){
if(a[k].getScore()>a[i].getScore()){
Node tmp=a[k];a[k]=a[i];a[i]=tmp;
i++;k++;
}else if(a[k].getScore()<a[i].getScore()) {
Node tmp=a[k];a[k]=a[j];a[j]=tmp;
j--;
}else if(a[k].getId()>a[i].getId()){
Node tmp=a[k];a[k]=a[i];a[i]=tmp;
k++;
}else{
k++;
}
}
if(l<i-1){
quickSort(l,i-1);
}
if(j+1<r){
quickSort(j+1,r);
}
}
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
n=reader.nextInt(); r=reader.nextInt(); q=reader.nextInt();
for(int i=0;i<=2*n;i++){
a[i]=new Node();
}
for(int i=0;i<=n;i++){
win[i]=new Node();
}
for(int i=0;i<=n;i++){
lose[i]=new Node();
}
for(int i=1;i<=2*n;i++){
a[i].scanScore();
a[i].scanId(i);
}
for(int i=1;i<=2*n;i++){
a[i].scanW();
}
quickSort(1,2*n);
for(int i=1;i<=r;i++){
winCnt=lsCnt=0;
for(int j=1;j<=n;j++){
if(a[2*j-1].getW()>a[2*j].getW()){
a[2*j-1].addScore();
winCnt++;
lsCnt++;
win[winCnt]=a[2*j-1];
lose[lsCnt]=a[2*j];
}else{
a[2*j].addScore();
winCnt++;
lsCnt++;
win[winCnt]=a[2*j];
lose[lsCnt]=a[2*j-1];
}
}
merge();
}
System.out.println(a[q].getId());
reader.close();
}
}
class Node{
private int id;
private int w;
private int score;
private static final Scanner sc=new Scanner(System.in);
public int getScore(){
return this.score;
}
public int getId(){
return this.id;
}
public int getW(){
return this.w;
}
public void scanScore(){
this.score=sc.nextInt();
}
public void scanW(){
this.w=sc.nextInt();
}
public void scanId(int id){
this.id=id;
}
public void addScore(){
this.score++;
}
}
我在intellij上面跑没问题,但是在测评机上就RE和MLE
有无神犇指点一下该怎么改,谢谢!