80分求助,最后一个测试点过不去qwq
查看原帖
80分求助,最后一个测试点过不去qwq
1030984
gyhwhitenight楼主2023/12/26 12:11

#include<stdio.h>
void insort1(int* x, int* y) {
	int t = 0;
	if (*x > *y) {
		t = *y;
		*y = *x;
		*x = t;
	}
}
void insort2(int* x, int* y) {
	int t = 0;
	if (*x < *y) {
		t = *y;
		*y = *x;
		*x = t;
	}
}
int main() {
	int n = 0, m = 0, tmp[102][22] = { 0 }, sum[102] = { 0 };
	double ans = 0;
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			scanf("%d", &tmp[i][j]);
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m - 1; j++) {
			for (int q = 0; q <= m - 1 - j; q++) {
            insort1(&tmp[i][q], &tmp[i][q + 1]);
			}	
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m - 2; j++) {
			for (int q = 0; q <= m - 2 - j; q++) {
				insort2(&tmp[i][q], &tmp[i][q + 1]);
			}
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m-2; j++) {
			sum[i] = sum[i] + tmp[i][j];
		}
	}
	for (int j = 0; j < n - 1; j++) {
     for (int i = 0; i <n-1-j; i++) {
		insort1(&sum[i], &sum[i + 1]);
	}
	}

	ans = (double)sum[n - 1] / (double)(m - 2);
	printf("%.2f", ans);
	return 0;
}

2023/12/26 12:11
加载中...