分值 : 25 难度 : 水题 思路 : 排个序,正的最大依次和正的最大相乘,负的最小依次和负的最小依次相乘 坑点 : 没啥可坑的 评语 : cin cout 太慢了了解一下
123456789101112131415161718192021222324252627282930313233
#include <iostream>#include <algorithm>using namespace std ;#define L(x,N,K) for(int x = 0 ; x< N ;x+=K)int coin[100001] ;int goods[100001] ;bool cmp(int a, int b){ return a > b ;}int main() { int N ,Nc; cin >> N ; L(i,N,1) scanf("%d" ,&coin[i]) ; cin >> Nc ; L(i,Nc,1) scanf("%d" ,&goods[i]) ; sort(coin, coin+N , cmp); sort(goods ,goods +Nc ,cmp ) ; int sum = 0 ; L(i,N,1) { if(coin[i] <= 0 || goods[i] <= 0 ) break ; sum += coin[i]* goods[i] ; } L(i,N,1) { if(coin[N-1-i] >=0 || goods[Nc-1-i]>=0 ) break ; sum+= coin[N-1-i] * goods[Nc-1-i] ; } cout << sum <<endl ;}