Source Code
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define all(v) v.begin(), v.end()
#define pb push_back    
#define sz(x) (int)(x).size()
const int N = 1e5 + 5;
int f[N], a[N];
void solve() {
    
    int n, q;
    scanf("%d%d", &n, &q);
    vector<pii> aa(q);
    map<int, int> query;
    for(int i = 0; i < n; ++i)
        scanf("%d", &a[i]), ++f[a[i]];
    bool ok = 1, same = 1;
    for(int i = 0; i < q; ++i){
        scanf("%d%d", &aa[i].first, &aa[i].second);
        if(i && aa[i].first < aa[i - 1].first)
            ok = 0;
        query[aa[i].first] += aa[i].second;
        if(query[aa[i].first] > f[aa[i].first])
            ok = 0;
        if(i)
            same &= (aa[i].first == aa[i - 1].first);
    }
    if((same && query[aa[0].first] != f[aa[0].first]) || ok == 0){
        puts("no");
    }else{
        puts("yes");
    }
    for(int i = 0; i < n; ++i)
        --f[a[i]];
}
int main() {
    int t = 1;
    scanf("%d",&t);
    while(t--)
        solve();
}
Copy
Sorted Array Partitioning noomaK
GNU G++17
111 ms
2.5 MB
Wrong Answer