Problem: 2061D - Kevin and Numbers
Language: C++17 (GCC 7-32)

Previous submission (verdict: Time limit exceeded on test 6):
#include <bits/stdc++.h>

// #include <numeric>

using namespace std;



// #define pi (3.141592653589)

//#define mod 1000000007

 //#define pb push_back

// #define is insert

// #define mp make_pair

// #define ff first

// #define ss second

// #define all(x) x.begin(), x.end()

// #define min3(a, b, c) min(c, min(a, b))

// #define min4(a, b, c, d) min(d, min(c, min(a, b)))

// #define rfr(n) for(int i=n-1;i>=0;i--)

// #define rep1(i,a,b) for(long long i=a;i<=b;i++)

// #define fr(n) for(long long i=0;i<n;i++)

// #define nesfr(x,y) for(long long i=0;i<x;i++)for(long long j=0;j<y;j++)

// #define nesf1(x,y) for(long long i=1;i<x;i++)for(long long j=1;j<y;j++)



// #define rep(i,a,b) for(long long i=a;i<b;i++)

//#define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

#define fastIO                                                                 \

    ios::sync_with_stdio(false);                                               \

    cin.tie(NULL);                                                             \

    cout.tie(NULL);                                                            \

    cout.precision(numeric_limits<double>::max_digits10);

 typedef long long ll;

// typedef long double ld;

// typedef vector<ll> vi;

// #define nl cout << "\n"

#define int long long

using ull = unsigned long long;

// const int INF = 2e18;



// const int MAX_BIT = 30;

// const int MOD = 998244353;

// int add(int x, int y) {

//     x += y;

//     if (x >= MOD) x -= MOD;

//     return x;

// }

//bool special = false;

// long long gcd(long long a, long long b) {

//     while (b) {

//         a %= b;

//         std::swap(a,b);

//     }

//     return a;

// }



// #define MAXN 1001

// int a[MAXN];



// int count_char(const string& s, char c) {

//     int cnt = 0;

//     for (char ch : s) {

//         if (ch == c) cnt++;

//     }

//     return cnt; 

// }









// int floorOp(int x, int n) {

//     while(n--) {

//         if(x == 0) break;

//         x /= 2;

//     }

//     return x;

// }



// int ceilOp(int x, int m) {

//     while(m--) {

//         if(x <= 1) break;

//         x = (x + 1) / 2;

//     }

//     return x;

// }





void solve() {

 int n,m;cin>>n>>m;

        ll sumA=0,sumB=0;

        unordered_map<ll,int> cnt;

        cnt.reserve(n*2);

        for(int i=0;i<n;i++){ll x;cin>>x;sumA+=x;cnt[x]++;}

        priority_queue<ll> pq;

        for(int i=0;i<m;i++){ll x;cin>>x;sumB+=x;pq.push(x);}

        if(sumA!=sumB){cout<<"No"<<endl;return;}

        while(!pq.empty() && !cnt.empty()){

            ll x=pq.top();pq.pop();

            auto it=cnt.find(x);

            if(it!=cnt.end()){

                if(--(it->second)==0)cnt.erase(it);

            } else {

                if(x==1) break;

                pq.push(x/2);

                pq.push(x-x/2);

            }

        }

        cout<<(cnt.empty()?"Yes":"No")<<endl;

}





int32_t main() {

    int t = 1;

    cin >> t;

    while (t--) {

        solve();

    }

    return 0;

}



Submission (verdict: Time limit exceeded on test 6):
#include <bits/stdc++.h>

// #include <numeric>

using namespace std;



// #define pi (3.141592653589)

//#define mod 1000000007

 //#define pb push_back

// #define is insert

// #define mp make_pair

// #define ff first

// #define ss second

// #define all(x) x.begin(), x.end()

// #define min3(a, b, c) min(c, min(a, b))

// #define min4(a, b, c, d) min(d, min(c, min(a, b)))

// #define rfr(n) for(int i=n-1;i>=0;i--)

// #define rep1(i,a,b) for(long long i=a;i<=b;i++)

// #define fr(n) for(long long i=0;i<n;i++)

// #define nesfr(x,y) for(long long i=0;i<x;i++)for(long long j=0;j<y;j++)

// #define nesf1(x,y) for(long long i=1;i<x;i++)for(long long j=1;j<y;j++)



// #define rep(i,a,b) for(long long i=a;i<b;i++)

//#define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

#define fastIO                                                                 \

    ios::sync_with_stdio(false);                                               \

    cin.tie(NULL);                                                             \

    cout.tie(NULL);                                                            \

    cout.precision(numeric_limits<double>::max_digits10);

 typedef long long ll;

// typedef long double ld;

// typedef vector<ll> vi;

// #define nl cout << "\n"

#define int long long

using ull = unsigned long long;

// const int INF = 2e18;



// const int MAX_BIT = 30;

// const int MOD = 998244353;

// int add(int x, int y) {

//     x += y;

//     if (x >= MOD) x -= MOD;

//     return x;

// }

//bool special = false;

// long long gcd(long long a, long long b) {

//     while (b) {

//         a %= b;

//         std::swap(a,b);

//     }

//     return a;

// }



// #define MAXN 1001

// int a[MAXN];



// int count_char(const string& s, char c) {

//     int cnt = 0;

//     for (char ch : s) {

//         if (ch == c) cnt++;

//     }

//     return cnt; 

// }









// int floorOp(int x, int n) {

//     while(n--) {

//         if(x == 0) break;

//         x /= 2;

//     }

//     return x;

// }



// int ceilOp(int x, int m) {

//     while(m--) {

//         if(x <= 1) break;

//         x = (x + 1) / 2;

//     }

//     return x;

// }





void solve() {

     int n,m;

    cin>>n>>m;

    ll sumA=0, sumB=0;

    unordered_map<ll,int> cnt;

    cnt.reserve(n*2);

    for(int i=0;i<n;i++){

        ll x;cin>>x;

        sumA += x;

        cnt[x]++;

    }

    priority_queue<ll> pq;

    for(int i=0;i<m;i++){

        ll x;cin>>x;

        sumB += x;

        pq.push(x);

    }

    if(sumA != sumB){

        cout<<"No"<<endl;

        return;

    }

    while(!pq.empty() && !cnt.empty()){

        ll x = pq.top(); pq.pop();

        auto it = cnt.find(x);

        if(it != cnt.end()){

            if(--it->second == 0)

                cnt.erase(it);

        } else {

            if(x == 1) break;

            pq.push(x/2);

            pq.push(x - x/2);

        }

    }

    cout<<(cnt.empty()?"Yes":"No")<<endl;

}





int32_t main() {

    int t = 1;

    cin >> t;

    while (t--) {

        solve();

    }

    return 0;

}