Submission #1180043

#TimeUsernameProblemLanguageResultExecution timeMemory
1180043Szymon_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]; unordered_map<int,int> mm; unordered_map<int,vector<int>> p1; unordered_map<int,vector<int>> p2; for(int i =0 ;i<n;i++) { cin>>c[i]; c[i]--; mm[c[i]]++; /*if(i%2 == 0 && i > 0) { if(c[i-1] != c[i]) { p2[c[i]].push_back(c[i-1]); } } else if(i%2 == 1) { if(c[i-1] != c[i]) { p1[c[i]].push_back(c[i-1]); } }*/ 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++) { int ans; for(int j = 0;j<p1[i].size();j++) { add(p1[i][j],-1); } add(i,-1e9); 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); } //cout<<mm[i]<<" "<<check()<<"\n"; 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...