10分蒟蒻求助help !!!!
查看原帖
10分蒟蒻求助help !!!!
601006
CSUST_GXL楼主2021/12/26 11:27
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n, num1, num2, num3, num4, num5, num6;
int num[7] = {1, 2, 2, 4, 7, 25, 80};
struct association {
	long long num, count, level;
	char name[35], position[35];
} as[200 + 1];
int cmp(const void *a, const void *b) {
	struct association *pa = (struct association *)a, *pb = (struct association *)b;
	if (pa->count > pb->count) return -1;
	if (pa->count < pb->count) return  1;
	if (pa->num < pb->num) return -1;
	if (pa->num > pb->num) return  1;
}
int cmp_next(const void *a, const void *b) {
	struct association *pa = (struct association *)a, *pb = (struct association *)b;
	if (pa->level > pb->level) return -1;
	if (pa->level < pb->level) return  1;
	if (pa->num < pb->num) return -1;
	return  1;
}
void set(int i) {
	if (num1 < 1) {
		num1++;
		strcpy(as[i].position, " BangZhu ");
		return ;
	}
	if (num2 < 2) {
		num2++;
		strcpy(as[i].position, " FuBangZhu ");
		return ;
	}
	if (num3 < 2) {
		num3++;
		strcpy(as[i].position, " HuFa ");
		return ;
	}
	if (num4 < 4) {
		num4++;
		strcpy(as[i].position, " ZhangLao ");
		return ;
	}
	if (num5 < 7) {
		num5++;
		strcpy(as[i].position, " TangZhu ");
		return ;
	}
	if (num6 < 7) {
		num6++;
		strcpy(as[i].position, " JingYing ");
		return ;
	}
	strcpy(as[i].position, " BangZhong ");
	return ;
}
int main() {
	int i, j;
	scanf("%d", &n);
	for (i = 1; i <= 200; i++) as[i].count = -1;
	for (i = 1; i <= n; i++) {
		scanf("%s %s %lld %lld", as[i].name, as[i].position, &as[i].count, &as[i].level);
		as[i].num = i;
	}
	qsort(as + 4, n - 3, sizeof(struct association), cmp);
	for (i = 1; i <= n; i++) set(i);
	for (i = 4, j = 1; i <= n; i += num[j]) {//第二次排序有问题
		qsort(as + i, num[++j], sizeof(struct association), cmp_next);
	}
//	printf("%d\n",num[j]);
	for (i = 1; i <= n; i++) {
		printf("%s", as[i].name);
		printf("%s", as[i].position);
//		printf("%d ",as[i].num);
		printf("%lld\n", as[i].level);
	}
	return 0;
}
2021/12/26 11:27
加载中...