Submission #1180054

#TimeUsernameProblemLanguageResultExecution timeMemory
1180054Szymon_PilipczukRope (JOI17_rope)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; int tr[2000000]; int n,m; void add(int p,int v) { p+=m; tr[p]+=v; p/=2; while(p > 0) { tr[p] = max(tr[p*2],tr[p*2+1]); p/=2; } } int check() { return tr[1]; } int main() { cin>>n>>m; int c[n]; vector<int> mm(m,0); vector<vector<int>> p1(m); vector<vector<int>> p2(m); for(int i =0 ;i<n;i++) { cin>>c[i]; c[i]--; mm[c[i]]++; add(c[i],1); } for(int i = 0;i<n;i++) { if(i > 0) { if(c[i-1] != c[i]) { if(i%2 == 0) { p2[c[i]].push_back(c[i-1]); } else { p1[c[i]].push_back(c[i-1]); } } } if(i < n-1) { if(c[i+1] != c[i]) { if(i%2 == 0) { p1[c[i]].push_back(c[i+1]); } else { p2[c[i]].push_back(c[i+1]); } } } } for(int i = 0;i<m;i++) { for(int j = 0;j<p1[i].size();j++) { add(p1[i][j],-1); } add(i,-1e9); int ans = n-check()-mm[i]; for(int j = 0;j<p1[i].size();j++) { add(p1[i][j],1); } for(int j = 0;j<p2[i].size();j++) { add(p2[i][j],-1); } ans = min(ans,n-check()-mm[i]); for(int j = 0;j<p2[i].size();j++) { add(p2[i][j],1); } add(i,1e9); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...