Untitled
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