Submission #1227408

#TimeUsernameProblemLanguageResultExecution timeMemory
1227408chaeryeongRope (JOI17_rope)C++20
55 / 100
2594 ms4168 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 1; int n, m, c[N], mn[N]; void solve () { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> c[i]; } for (int i = 1; i <= m; i++) { mn[i] = 1e9; } if (n % 2 == 1) { for (int i = 1; i <= m; i++) { vector <int> ff(m + 1, 0); int s = 0, v = 0; for (int j = 1; j < n; j += 2) { if (c[j] != i && c[j + 1] != i) { ff[c[j]]++; ff[c[j + 1]]++; s += 2; } else { v += c[j] != i; v += c[j + 1] != i; } } if (c[n] != i) { ff[c[n]]++; s++; } int cnt = 0; for (int j = 1; j <= m; j++) { cnt += c[j] == i; } mn[i] = min(mn[i], v + s - *max_element(ff.begin(), ff.end())); } } if (n % 2 == 1) { for (int i = 1; i <= m; i++) { vector <int> ff(m + 1, 0); int s = 0, v = 0; for (int j = 2; j <= n; j += 2) { if (c[j] != i && c[j + 1] != i) { ff[c[j]]++; ff[c[j + 1]]++; s += 2; } else { v += c[j] != i; v += c[j + 1] != i; } } if (c[1] != i) { ff[c[1]]++; s++; } int cnt = 0; for (int j = 1; j <= m; j++) { cnt += c[j] == i; } mn[i] = min(mn[i], v + s - *max_element(ff.begin(), ff.end())); } } if (n % 2 == 0) { for (int i = 1; i <= m; i++) { vector <int> ff(m + 1, 0); int s = 0, v = 0; for (int j = 2; j < n; j += 2) { if (c[j] != i && c[j + 1] != i) { ff[c[j]]++; ff[c[j + 1]]++; s += 2; } else { v += c[j] != i; v += c[j + 1] != i; } } if (c[1] != i) { ff[c[1]]++; s++; } if (c[n] != i) { ff[c[n]]++; s++; } int cnt = 0; for (int j = 1; j <= m; j++) { cnt += c[j] == i; } mn[i] = min(mn[i], v + s - *max_element(ff.begin(), ff.end())); } } if (n % 2 == 0) { for (int i = 1; i <= m; i++) { vector <int> ff(m + 1, 0); int s = 0, v = 0; for (int j = 1; j <= n; j += 2) { if (c[j] != i && c[j + 1] != i) { ff[c[j]]++; ff[c[j + 1]]++; s += 2; } else { v += c[j] != i; v += c[j + 1] != i; } } int cnt = 0; for (int j = 1; j <= m; j++) { cnt += c[j] == i; } mn[i] = min(mn[i], v + s - *max_element(ff.begin(), ff.end())); } } for (int i = 1; i <= m; i++) { cout << mn[i] << '\n'; } } signed main () { ios::sync_with_stdio(0); cin.tie(0); int tc = 1; //cin >> tc; while (tc--) solve(); }
#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...