Submission #1283104

#TimeUsernameProblemLanguageResultExecution timeMemory
1283104GoBananas69Diversity (CEOI21_diversity)C++20
64 / 100
292 ms20212 KiB
#include <algorithm> #include <cmath> #include <iostream> #include <queue> #include <set> #include <vector> #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,avx,avx2,popcnt,tune=native") #define fi first #define se second using namespace std; typedef long long ll; typedef pair<ll, ll> pll; const ll MAXN = 3e5 + 5; const ll MAXQ = 5e4 + 5; const ll MAX = 1e18; ll n, q, k = 0, ans = MAX; ll cnt[MAXN], compressed[MAXN], ccnt[MAXN]; vector<ll> nums; set<ll> st; ll count(ll iniIdx, ll sum[]) { ll out = 0, bef = 0; for (int i = iniIdx; i <= k; i += 2) { ll after = sum[(iniIdx + 1) % 2] + (sum[iniIdx % 2] - bef - ccnt[i]); out += bef * bef + after * after; bef += ccnt[i]; } return out; } ll calc() { ll out = n * k * (n + 1) - n * (k - 1); ll sqSum = 0; sort(ccnt + 1, ccnt + k + 1); ll sum[2] = {0, 0}; for (int i = 1; i <= k; ++i) { sum[i % 2] += ccnt[i]; } sqSum += count(1, sum); sqSum += count(2, sum); out = (out - sqSum) / 2; return out; } void compress() { for (auto it = st.begin(); it != st.end(); it++) { k++; compressed[(*it)] = k; ccnt[k] = cnt[(*it)]; } } int main() { cin >> n >> q; for (int i = 1; i <= n; ++i) { ll tmp; cin >> tmp; st.insert(tmp); cnt[tmp]++; } compress(); ll _tmp; cin >> _tmp >> _tmp; for (int i = 1; i <= k; ++i) { nums.push_back(i); } sort(nums.begin(), nums.end()); ans = calc(); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...