Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define nl '\n'
- #define cin(v) \
- for (auto &i : v) \
- cin >> i;
- #define cout(v) \
- for (auto &i : v) \
- cout << i << " "; \
- cout<<nl;
- #define br cout << '\n';
- #define ll long long
- #define ull unsigned long long
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- #define MOD 1000000007
- #define Time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs" \
- << "\n";
- void Warding()
- {
- ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
- #endif
- }
- void solve()
- {
- ll n, sum1 = 0, sum2 = 0; cin>>n;
- vector<int> a(n), b(n);
- for(auto&i:a) cin>>i, sum1 += i;
- for(auto&i:b) cin>>i, sum2 += i;
- map<ll,ll> m, m2;
- sort(all(a));
- sort(all(b));
- for(int i=0; i<n; i++){
- if(sum1 > sum2){
- int temp = max(a[i],b[i]), temp2 = min(a[i],b[i]);
- sum1 -= a[i];
- a[i] = temp2;
- sum2 -= b[i];
- b[i] = temp;
- sum1 += a[i];
- sum2 += b[i];
- }else if(sum2 > sum1){
- int temp = max(a[i],b[i]), temp2 = min(a[i],b[i]);
- sum1 -= a[i];
- sum2 -= b[i];
- b[i] = temp2;
- a[i] = temp;
- sum1 += a[i];
- sum2 += b[i];
- }
- else{
- cout<<"YES"<<'\n';
- return;
- }
- }
- for(int i=0; i<n; i++){
- m[b[i]]++;
- m2[a[i]]++;
- }
- for(int i=0; i<n; i++){
- if(m[a[i]-(abs(sum1-sum2)/2)] and (sum1+sum2)%2 == 0 and sum1 > sum2){
- cout<<"YES"<<'\n';
- return;
- }
- }
- for(int i=0; i<n; i++){
- if(m2[b[i]-(abs(sum1-sum2)/2)] and (sum1+sum2)%2 == 0 and sum2>sum1){
- cout<<"YES"<<'\n';
- return;
- }
- }
- cout<<(sum1==sum2?"YES":"NO")<<'\n';
- }
- int main()
- {
- Warding();
- int t = 1;
- cin >> t;
- while (t--)
- {
- solve();
- }
- Time
- }
Add Comment
Please, Sign In to add comment