1037 Magic Coupon (25 分)

版权声明:SupremeBeast3_ https://blog.csdn.net/weixin_43359312/article/details/89047543

1037 Magic Coupon (25 分)

在这里插入图片描述
Sample Input:
4
1 2 4 -1
4
7 6 -2 -3
Sample Output:
43

一刷4测试点超时代码

#include <iostream>
#include <cstdio>
using namespace std;
int C[100002], P[100002];
int main() {
	int NC, NP;
	scanf("%d", &NC);
	for (int i = 0; i < NC; i++) scanf("%d", &C[i]);
	scanf("%d", &NP);
	for (int i = 0; i < NP; i++) scanf("%d", &P[i]);
	int Sum = 0;
	bool Flag = true;
	while (Flag) {
		Flag = false;
		bool Flag1 = false, Flag2 = false;
		int k1 = -1, k2 = -1, ZMax = 1, FMax = -1;
		for (int i = 0; i < NC; i++) {
			if (C[i] >= ZMax) { Flag1 = true; ZMax = C[i]; k1 = i; }
			if (C[i] <= FMax) { Flag1 = true; FMax = C[i]; k2 = i; }
		}
		if (k1 != -1) C[k1] = 0;
		if (k2 != -1) C[k2] = 0;
		int CZMax = ZMax, CFMax = FMax;
		ZMax = 1, FMax = -1;
		int k3 = -1, k4 = -1;
		for (int i = 0; i < NP; i++) {
			if (P[i] >= ZMax) { Flag2 = true; ZMax = P[i]; k3 = i; }
			if (P[i] <= FMax) { Flag2 = true; FMax = P[i]; k4 = i; }
		}
		if (k3 != -1) P[k3] = 0;
		if (k4 != -1) P[k4] = 0;
		int	PZMax = ZMax, PFMax = FMax;
		int Sum1 = 0, Sum2 = 0;
		if (k1 != -1 && k3 != -1) Sum1 = CZMax*PZMax;
		if (k2 != -1 && k4 != -1) Sum2 = CFMax*PFMax;
		if (Flag1 && Flag2) { Sum = Sum + Sum1 + Sum2; Flag = true; }
	}
	cout << Sum << endl;
	return 0;
}

二刷AC代码

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int C[100001], P[100001];
int main() {
	int NC, NP;
	cin >> NC;
	int pos1, pos2;		//pos记录C的位置 pos2记录P的位置
	for (pos1 = 0; pos1 < NC; pos1++) scanf("%d", &C[pos1]);
	cin >> NP;
	for (pos2 = 0; pos2 < NP; pos2++) scanf("%d", &P[pos2]);
	sort(C, C + NC);
	sort(P, P + NP);	//对C和P的数从小到大进行排序
	int Sum = 0;
	for (int i = 0; i < min(NC, NP); i++) {
		if (C[i] < 0 && P[i] < 0) Sum += C[i] * P[i];
		else break;
	}	//此循环得到负数的解
	while (C[--pos1] > 0 && P[--pos2] > 0) Sum += C[pos1] * P[pos2];
	cout << Sum << endl;		//此循环得到正数的解
	return 0;		//正负要分开才能得到最优解 因为C和P的数量不一定匹配
}

猜你喜欢

转载自blog.csdn.net/weixin_43359312/article/details/89047543