Submission #758128

#TimeUsernameProblemLanguageResultExecution timeMemory
758128PixelCatRope (JOI17_rope)C++14
55 / 100
1115 ms262144 KiB
#include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define eb emplace_back #define int LL #define INF (int)(1e18) using namespace std; using LL = long long; using pii = pair<int, int>; void chmin(int &x, int a) { x = min(x, a); } void chmax(int &x, int a) { x = max(x, a); } const int MAXN = 1000010; int ans[MAXN]; int cnt1[MAXN]; void solve(int n, int m, vector<pii> v2, vector<int> v1) { for(auto &i:v2) { if(i.F > i.S) swap(i.F, i.S); } // i.F <= i.S memset(cnt1, 0, sizeof(cnt1)); map<pii, int> cnt2; for(auto &i:v2) { cnt1[i.F]++; cnt1[i.S]++; cnt2[i]++; } For(c1, 1, m) { For(c2, c1 + 1, m) { int cost = n - cnt1[c1] - cnt1[c2] + cnt2[pii(c1, c2)]; for(auto &i:v1) { cost -= max(i == c1, i == c2); } chmin(ans[c1], cost); chmin(ans[c2], cost); } int cost = n - cnt1[c1]; for(auto &i:v1) cost -= (i == c1); chmin(ans[c1], cost); } } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // =^-w-^= int n, m; cin >> n >> m; vector<int> a(n); for(auto &i:a) cin >> i; For(i, 1, m) { ans[i] = INF; } if(n % 2) { For(_, 0, 1) { vector<pii> v2; for(int i = 1; i < n; i += 2) { v2.eb(pii(a[i - 1], a[i])); } solve(n, m, v2, { a.back() }); reverse(all(a)); } } else { vector<pii> v2; for(int i = 1; i < n; i += 2) { v2.eb(pii(a[i - 1], a[i])); } solve(n, m, v2, {}); v2.clear(); for(int i = 2; i < n; i += 2) { v2.eb(pii(a[i - 1], a[i])); } solve(n, m, v2, { a.front(), a.back() }); } For(i, 1, m) cout << ans[i] << "\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...