int的bit数是32,题目里明确标识可以int解决的事不要用double
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int Nc, Np; vector<int> C, P; int result = 0; cin>>Nc; for(int i = 0; i < Nc; i++){ int d; cin>>d; C.push_back(d); } cin>>Np; for(int i = 0; i < Np; i++){ int d; cin>>d; P.push_back(d); } sort(C.begin(), C.end()); sort(P.begin(), P.end()); auto Citr = C.begin(), Pitr = P.begin(); while(Citr != C.end() && Pitr != P.end() && *Citr < 0 && *Pitr < 0){ result += (*Citr)*(*Pitr); Citr ++; Pitr ++; } reverse(C.begin(), C.end()); reverse(P.begin(), P.end()); Citr = C.begin(), Pitr = P.begin(); while(Citr != C.end() && Pitr != P.end() && *Citr > 0 && *Pitr > 0){ result += (*Citr)*(*Pitr); Citr ++; Pitr ++; } cout<<result; }