1037 Magic Coupon

想了个思路,网上搜一下是对的,然后自己实现了

才知道这就叫贪心

另外不用考虑那个数字<2^30

#include <stdio.h>
#include <algorithm>
#define len 100000+5

int NC, NP;
int c[len],p[len];

int cmp(const void * a, const void * b){//默认顺序也还是要定义一个 cmp
	return (*(int*)a - *(int *)b);
}

int main(){
	//freopen("in.txt","r",stdin);


	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]);
	}

	qsort(c,NC,sizeof(int),cmp);
	qsort(p,NP,sizeof(int),cmp);

	long long res = 0;

	for(int i = NC-1, j = NP-1; i >= 0 && j >= 0; i--,j--){
		if(c[i]>0 && p[j]>0){
			res += c[i]*p[j];
		}
	}

	for(int i =0, j = 0; i < NC && j < NP; i++,j++){
		if(c[i]<0 && p[j]<0){
			res += c[i]*p[j];
		}
	}

	printf("%lld",res);

}


你可能感兴趣的:(1037 Magic Coupon)