Advertisement
fooker

Untitled

Nov 12th, 2022
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. ll maximum(ll x, ll y){
  5. if (x>y) return x;
  6. else return y;
  7. }
  8. int main()
  9. {
  10.     ll t;
  11.     cin>>t;
  12.     while(t--){
  13.         ll n;
  14.         cin>>n;
  15.         ll a[n],b[n];
  16.         vector <int> v1,v2;
  17.         for (ll i=0; i<n; i++) cin>>a[i];
  18.         for (ll i=0; i<n; i++){
  19.             cin>>b[i];
  20.             if (a[i]==0) v1.push_back(b[i]);
  21.             else v2.push_back(b[i]);
  22.         }
  23.         sort(v1.begin(),v1.end());
  24.         sort(v2.begin(),v2.end());
  25.         ll p=accumulate(v1.begin(),v1.end(),0), q=accumulate(v2.begin(),v2.end(),0);
  26.         if (v1.size()==0 || v2.size()==0){
  27.             if (v1.size()==0) cout<<q<<"\n";
  28.             else cout<<p<<"\n";
  29.         }
  30.         else {
  31.             if (v1.size()==v2.size()){
  32.             ll r=maximum(2*(p+q)-v1[0],2*(p+q)-v2[0]);
  33.             cout<<r<<"\n";
  34.             }
  35.             else {
  36.                 ll k=min(v1.size(),v2.size());
  37.                 sort(v1.begin(),v1.end(),greater<ll>());
  38.                 sort(v2.begin(),v2.end(),greater<ll>());
  39.                 ll sum=0;
  40.                 for (int i=0; i<k; i++){
  41.                     sum+=v1[i]+v2[i];
  42.                 }
  43.                 cout<<p+q+sum<<"\n";
  44.             }
  45.         }
  46.     }
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement