Submission #1180331

#TimeUsernameProblemLanguageResultExecution timeMemory
1180331Szymon_PilipczukRope (JOI17_rope)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define st first #define nd second #define all(a) a.begin(),a.end() int main() { int n,m; cin>>n>>m; int c[n]; vector<int> am(m); vector<map<int,int>> e(m); vector<map<int,int>> e2(m); for(int i =0 ;i<n;i++) { cin>>c[i]; c[i]--; am[c[i]]++; } vector<pair<int,int>> w; for(int i = 0;i<m;i++) { w.push_back({am[i],i}); } sort(all(w)); reverse(all(w)); for(int i = 0;i<n;i++) { if(i < n-1) { if(c[i+1] != c[i]) { if(i%2 == 0) { e[c[i]][c[i+1]]++; e[c[i+1]][c[i]]++; } else { e2[c[i]][c[i+1]]++; e2[c[i+1]][c[i]]++; } } } } for(int i = 0;i<m;i++) { for(int j = 0;j<m;j++) { if(e[i].find(w[j].nd) == e[i].end() && w[j].nd != i) { e[i][w[j].nd] = 0; break; } } } for(int i = 0;i<m;i++) { for(int j = 0;j<m;j++) { if(e2[i].find(w[j].nd) == e2[i].end() && w[j].nd != i) { e2[i][w[j].nd] = 0; break; } } } for(int i = 0;i<m;i++) { int ans = 1e9; for(auto [key,value] : e[i]) { int cu = n-am[i]-am[key]+value; if(n%2 == 1 && (c[n-1] != key && c[n-1] != i)) { cu++; } ans = min(ans,cu); } int ans2 = 1e9; for(auto [key,value] : e2[i]) { int cu =n-am[i]-am[key]+value; if(n%2 == 0) { if(c[n-1] != key && c[n-1] != i) { cu++; } } if(c[0] != key &&c[0] != i) { cu++; } ans2 = min(ans2,cu); } cout<<min(ans,ans2)<<"\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...
#Verdict Execution timeMemoryGrader output
Fetching results...