求助#2 5 8 10WA
查看原帖
求助#2 5 8 10WA
802370
waibibabu11楼主2023/7/28 11:26
#include<stdio.h>
#include<stdlib.h>

struct node{
	int neng;
	int fen;
	int n;
}a[1001000],b[1000100];

int cmp(const void *a,const void *b){
	int ta,tb;
	ta=((struct node *)a)->fen;
	tb=((struct node *)b)->fen;
	if(ta==tb){
		return ((struct node *)a)->n-((struct node *)b)->n;
	}else{
		return tb-ta;
	}
}

void merge(int l,int r){
	if(l>=r){
		return ;
	}
	int mid=(l+r)/2;
	merge(l,mid);
	merge(mid+1,r);
	int p=l,q=mid+1;
	int pb=l;
	while(p<=mid && q<=r){
		if(a[p].fen >a[q].fen ){
			b[pb++]=a[p++];
			
		}else if(a[p].fen <a[q].fen ){
			b[pb++]=a[q++];
		}else{
			if(a[p].n > a[q].n ){
				b[pb++]=a[q++];
			}else{
				b[pb++]=a[p++];
			}
		}
	}
	if(p<=mid){
		b[pb++]=a[p++];
	}
	if(q<=r){
		b[pb++]=a[q++];
	}
	//printf("%d %d\n",pb,r);
	for(int i=l;i<=r;i++){
		a[i]=b[i];
	}
}
int main(){
	int n,r,q;
	scanf("%d %d %d",&n,&r,&q);
	n*=2;
	int i;
	for(i=1;i<=n;i++){
		scanf("%d",&a[i].fen );
		a[i].n = i;
	}
	for(i=1;i<=n;i++){
		scanf("%d",&a[i].neng );
	}
	qsort(&a[1],n,sizeof(a[1]),cmp);
//	 for(i=1;i<=n;i++){
//		printf("%d",a[i].fen );
//	}
	for(i=1;i<=r;i++){
		int j;
		for(j=1;j<n;j+=2){
			if(a[j].neng > a[j+1].neng ){
				a[j].fen++;
			}else{
				a[j+1].fen++ ;
			}
		}
		merge(1,n);
	}
	printf("%d",a[q].n);
	return 0;
}
2023/7/28 11:26
加载中...