Skip to content

AdvancedLevel_C++/1037. Magic Coupon Suggestion #176

@Hallucinat1on

Description

@Hallucinat1on

计算总和一次排序即可

#include<iostream>
#include<algorithm>
#define N 111111
using namespace std;

bool cmp(int a,int b){
	if(a>0||b>0)return a>b;  //正数从大到小排序 
	return a<b;  //负数从小到大排序 
}

int main(){
	int nc,np,coupon[N],good[N];
	cin>>nc;
	for(int i=0;i<nc;i++)cin>>coupon[i];
	cin>>np;
	for(int i=0;i<np;i++)cin>>good[i];
	sort(coupon,coupon+nc,cmp);
	sort(good,good+np,cmp);
	int ic,ip,mul,sum=0;
	for(ic=0,ip=0;ic<nc&&ip<np;ic++,ip++){
		mul=coupon[ic]*good[ip];
		if(mul>0)sum+=mul;
		else if(coupon[ic]>0)ip--;
		else ic--;
	}
	cout<<sum;
} 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions