Submission #527904

#TimeUsernameProblemLanguageResultExecution timeMemory
5279041neIzbori (COCI22_izbori)C++14
25 / 110
3065 ms3900 KiB
#include<iostream> #include<algorithm> #include<functional> #include<numeric> #include<vector> #include<utility> #include<map> #include<set> using namespace std; long long merge(int left,int mid ,int right,vector<int64_t>&arr) { vector<int64_t>temp; int i = left, j = mid+1; long long ans = 0; while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { temp.push_back(arr[i]); ++i; } else { temp.push_back(arr[j]); ++j; } } while (i <= mid) { temp.push_back(arr[i]); ++i; } while (j <= right) { temp.push_back(arr[j]); ++j; } for (auto x : temp) { arr[left] = x; ++left; } return ans; } long long mergesort(int left,int right,vector<int64_t>&arr) { int mid = (left + right) >> 1; if (left >= right)return 0 ; long long ans = 0; ans+=mergesort(left, mid, arr); ans+=mergesort(mid+1, right, arr); ans+=merge(left, mid, right, arr); return ans; } int main() { int n;cin >> n; vector<int>arr(n); for (int i = 0;i < n;++i)cin >> arr[i]; int64_t ans = n; arr.push_back(-1); for (int i = 2;i <= n;++i) { map<int, int>freq; multiset < pair<int, int>, greater<pair<int, int>>>mp; for (int j = 0;j < i;++j) { freq[arr[j]]++; } for (auto x : freq) { mp.insert({ x.second,x.first }); } for (int j = 0;j <= n - i;++j) { auto x = *mp.begin(); if (x.first > i / 2) { ans++; } mp.erase({ freq[arr[j]],arr[j] }); freq[arr[j]]--; mp.insert({ freq[arr[j]],arr[j] }); freq[arr[j+i]]++; mp.insert({ freq[arr[j + i]],arr[j + i] }); } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...