首页 > 学院 > 开发设计 > 正文

1037. Magic Coupon 解析

2019-11-09 19:23:31
字体:
来源:转载
供稿:网友

分了四个组 然后排序 正的大的放前面 负的小的放前面 然后加起来。

#include <iostream>#include <vector>#include <algorithm>#include <queue>using namespace std;vector <long long> cp; //+vector <long long> cn; //-vector <long long> pp; //+vector <long long> pn; //-bool cmpP(long long l1, long long l2) {	return l1 > l2;}bool cmpN(long long l1, long long l2) {	return l1 < l2;}int main() {	int NC, NP;	cin >> NC;	long long temp;	for (int i = 0; i < NC; i++) {		cin >> temp;		if (temp >= 0)			cp.push_back(temp);		else			cn.push_back(temp);	}	cin >> NP;	for (int i = 0; i < NP; i++) {		cin >> temp;		if (temp >= 0)			pp.push_back(temp);		else			pn.push_back(temp);	}	sort(cp.begin(), cp.end(), cmpP);	sort(pp.begin(), pp.end(), cmpP);	sort(cn.begin(), cn.end(), cmpN);	sort(pn.begin(), pn.end(), cmpN);	int lcp = cp.size();	int lpp = pp.size();	int lcn = cn.size();	int lpn = pn.size();	int SumTake = 0;	if (lcp > 0 && lpp > 0) {		int i = 0, j = 0;		while (lcp && lpp) {			SumTake += cp[i] * pp[j];			lcp--, lpp--, i++, j++;		}	}	if (lcn > 0 && lpn > 0) {		int i = 0, j = 0;		while (lcn && lpn) {			SumTake += cn[i] * pn[j];			lcn--, lpn--, i++, j++;		}	}	cout << SumTake << endl;	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表