Untitled

 avatar
user_9000366
plain_text
22 days ago
2.2 kB
8
Indexable
// G 
void Mesh_JOO() {
    int n;
    cin >> n;
    vector<pair<int, int> > a(n);
    map<int, int> f, b;
    set<int> st;
    for (auto &i: a) {
        cin >> i.first >> i.second;
        f[i.first]++;
        if (i.first != i.second)
            b[i.second]++;
        st.insert(i.first);
        st.insert(i.second);
    }
    int ans = INT_MAX;
    int res = (n + 1) / 2;
    for (auto i: st) {
        if (f[i] >= res) {
            ans = 0;
        } else if (f[i] + b[i] >= res) {
            ans = min(ans, res - f[i]);
        }
    }
    if (ans == INT_MAX) {
        cout << -1 << '\n';
    } else {
        cout << ans << '\n';
    }
}



void Mesh_JOO() {
    int n, q;
    cin >> n >> q;
    // map id = true , false;
    map<int, bool> read;
    vector<vector<int> > adj(n + 1);
    queue<int> qu;
    int id = 1;
    int res = 0;
    while (q--) {
        int ty;
        cin >> ty;
        if (ty == 1) {
            res++;
            int x;
            cin >> x;
            adj[x].push_back(id);
            qu.push(id);
            id++;
        } else if (ty == 2) {
            int x;
            cin >> x;
            for (auto i: adj[x]) {
                if (!read[i]) {
                    read[i] = true;
                    res--;
                }
            }
            adj[x].clear();
        } else {
            int t;
            cin >> t;
            while (!qu.empty() and qu.front() <= t) {
                if (!read[qu.front()]) {
                    res--;
                }
                read[qu.front()] = true;
                qu.pop();
            }
        }
        cout << res << '\n';
    }
}

void Mesh_JOO() {
    int n;
    cin >> n;
    vector<int> a(n);
    map<int, int> mp, mp2;
    for (auto &i: a)cin >> i, mp[i]++;
    for (auto i: mp)
        mp2[i.second]++;
    vector<ll> pre(n + 1);
    for (int i = 1; i <= n; i++)
        pre[i] = pre[i - 1] + mp2[i - 1] * (i - 1);
    ll suf = 0, sum = 0, ans = LONG_LONG_MAX;
    for (int c = n; c >= 0; c--) {
        ans = min(ans, pre[c] + suf);
        sum += mp2[c];
        suf += sum;
    }
    cout << ans << '\n';
}
Editor is loading...
Leave a Comment