Untitled
user_9000366
plain_text
8 months ago
2.2 kB
11
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