Submission #756075

#TimeUsernameProblemLanguageResultExecution timeMemory
756075PixelCatRope (JOI17_rope)C++14
45 / 100
2548 ms3152 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]; 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 For(c1, 1, m) For(c2, c1, m) { int cost = 0; for(auto &i:v2) { int a = (i.F != c1) + (i.S != c1); int b = (i.F != c2) + (i.S != c2); cost += min(a, b); } for(auto &i:v1) { cost += min(i != c1, i != c2); } chmin(ans[c1], cost); chmin(ans[c2], 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...